asp.net-mvc – 如何使用ASP.NET MVC 2验证两个属性
发布时间:2020-05-25 05:13:16 所属栏目: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:如果我有Session ID,可以获取Session对象吗?
- asp.net – 如何正确过滤数据表(datatable.select)
- 如何使用asp.net将.docx转换为html?
- 在ASP.NET中使用JQuery选择ID属性
- asp.net-mvc – 视图模型和数据传输对象之间的区别是什么?
- 实体框架 – 在Db初始化程序的种子方法中创建Asp.net身份用
- asp.net – 无法CoCreate Profiler错误 – 但不使用分析器
- ASP.NET – 从内容页面访问主页面元素
- asp.net-mvc – ASP.NET MVC Beta支持列表中的Model Binder
- asp.net-mvc – 尝试使用TeamCity构建asp.net mvc Web应用程
推荐文章
站长推荐
热点阅读
