asp.net-mvc – 如何使用ASP.NET MVC 2验证两个属性
发布时间:2020-12-16 00:01:53 所属栏目:asp.Net 来源:网络整理
导读:我刚刚开始使用ASP.NET MVC 2,并且正在使用Validation. 假设我有2个属性: 密码1 密码2 我想要求它们都被填写,并要求在模型有效之前两者都相同. 我有一个名为“NewUser”的简单类. 我该如何实现?我已经阅读了ValidationAttribute,并了解这一点.但我不知道如
我刚刚开始使用ASP.NET MVC 2,并且正在使用Validation.
假设我有2个属性: >密码1 我想要求它们都被填写,并要求在模型有效之前两者都相同. 我有一个名为“NewUser”的简单类. 我该如何实现?我已经阅读了ValidationAttribute,并了解这一点.但我不知道如何使用它来实现比较两个或更多属性与eathother的验证. 提前致谢! 以下解决方案的问题: 当这应用于应用程序,并且ModelBinder运行模型的验证时,则存在一个问题: 如果属性级ValidationAttribute包含错误,则不验证类级别ValidationAttribute.我还没有找到解决这个问题的方法. 如果您有解决此问题的方法,请分享您的经验.非常感谢! 解决方法
Visual Studio的默认ASP.NET MVC 2模板包含您需要的确切验证属性.从AccountModels.cs文件粘贴:
[AttributeUsage(AttributeTargets.Class,AllowMultiple = true,Inherited = true)] public sealed class PropertiesMustMatchAttribute : ValidationAttribute { private const string _defaultErrorMessage = "'{0}' and '{1}' do not match."; private readonly object _typeId = new object(); public PropertiesMustMatchAttribute(string originalProperty,string confirmProperty) : base(_defaultErrorMessage) { OriginalProperty = originalProperty; ConfirmProperty = confirmProperty; } public string ConfirmProperty { get; private set; } public string OriginalProperty { get; private set; } public override object TypeId { get { return _typeId; } } public override string FormatErrorMessage(string name) { return String.Format(CultureInfo.CurrentUICulture,ErrorMessageString,OriginalProperty,ConfirmProperty); } public override bool IsValid(object value) { PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); object originalValue = properties.Find(OriginalProperty,true /* ignoreCase */).GetValue(value); object confirmValue = properties.Find(ConfirmProperty,true /* ignoreCase */).GetValue(value); return Object.Equals(originalValue,confirmValue); } } 如何使用 : [PropertiesMustMatch("Password","ConfirmPassword",ErrorMessage = "The password and confirmation password do not match.")] class NewUser { [Required] [DataType(DataType.Password)] [DisplayName("Password")] public string Password { get; set; } [Required] [DataType(DataType.Password)] [DisplayName("Confirm password")] public string ConfirmPassword { get; set; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 直接将.aspx转换为.pdf [已关闭]
- asp.net-mvc – 用于MVC开发的Visual Studio 2010 Express吗
- asp.net – 如何在服务器端杀死.ASPXAUTH cookie?
- .net – vNext是完全“基于约定的编程”吗?
- ASP.NET MVC:OutputCache的问题
- ASP.NET的BlogEngine.Net堆栈到WordPress?
- asp.net-mvc – ASP.NET MVC Json DateTime序列化转换为UTC
- asp.net-mvc – ASP.NET MVC 3:什么以及什么时候缓存以及如
- .net – 为什么事件处理程序只能在IHttpModule初始化期间绑
- asp.net – 一键发布:执行发布时出现异常:已添加具有相同