asp.net-mvc-3 – ASP.NET MVC3条件验证EditorTemplate的嵌套模
发布时间:2020-12-16 09:23:19 所属栏目:asp.Net 来源:网络整理
导读:假设您有一个viewModel: public class CreatePersonViewModel{ [Required] public bool HasDeliveryAddress {get;set;} // Should only be validated when HasDeliveryAddress is true [RequiredIf("HasDeliveryAddress",true)] public Address Address { g
假设您有一个viewModel:
public class CreatePersonViewModel { [Required] public bool HasDeliveryAddress {get;set;} // Should only be validated when HasDeliveryAddress is true [RequiredIf("HasDeliveryAddress",true)] public Address Address { get; set; } } 模型地址将如下所示: public class Address : IValidatableObject { [Required] public string City { get; set; } [Required] public string HouseNr { get; set; } [Required] public string CountryCode { get; set; } [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } [Required] public string ZipCode { get; set; } [Required] public string Street { get; set; } #region IValidatableObject Members public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { string[] requiredFields; var results = new List<ValidationResult>(); // some custom validations here (I removed them to keep it simple) return results; } #endregion } 有些人会建议为Address创建一个viewmodel并在那里添加一些自定义逻辑,但我需要一个Address实例传递给我的EditorTemplate for Address. 这里的主要问题是Address的验证是在我的PersonViewModel验证之前完成的,所以我无法阻止它. 注意:RequiredIfAttribute是一个自定义属性,它可以完成我想要的简单类型. 解决方法
如果您使用
FluentValidation.NET而不是DataAnnotations或IValidatableObject,在复杂的情况下会严重限制验证功能,那本来就是小菜一碟:
public class CreatePersonViewModelValidator : AbstractValidator<CreatePersonViewModel> { public CreatePersonViewModelValidator() { RuleFor(x => x.Address) .SetValidator(new AddressValidator()) .When(x => x.HasDeliveryAddress); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – Net Web API – 如何在Get上传递URL作为
- asp.net-mvc – 为什么httphandler没有运行
- 请求的ASP.NET窗体身份验证失败 原因:提供的票已过期
- asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 Edito
- asp.net-mvc-3 – Hz.Raw()的Razor替代品
- asp.net-mvc-4 – PartialView()不返回带下划线的View
- 在ASP.NET MVC4项目中包含jquery的正确方法
- 版本化ASP.NET Web应用程序
- asp.net – 使用ITemplate对自定义控件进行数据绑定
- asp.net-mvc – 在IE中清除cookie后,保持用户登录的是什么?
推荐文章
站长推荐
- JSON字符串反序列化成对象_部分属性值反序列化失
- asp.net-mvc – 如何在asp.net mvc中持久化查询字
- asp.net – 每个Web服务器的Azure Service Bus主
- asp.net – Web.config身份验证错误
- 你如何正确使用UpdatePanel? (asp.net)
- asp.net – 获取在page_init中触发回发的控件
- asp.net-mvc – ASP.NET MVC:多个项目错误
- asp.net – 单击GridView行上的任意位置以进入编
- asp.net – Combres的路线(combres.axd)不起作用
- asp.net-mvc-2 – 如何使用Castle Windsor在MVC中
热点阅读