C# ASP.NET MVC 2中的验证
我在ASP.NET MVC 2中使用数据注释进行验证时遇到一些问题。例如,我有Address类:C# ASP.NET MVC 2中的验证,c#,validation,asp.net-mvc-2,data-annotations,C#,Validation,Asp.net Mvc 2,Data Annotations,我在ASP.NET MVC 2中使用数据注释进行验证时遇到一些问题。例如,我有Address类: public class Address { public long Id { get; set; } [Required] public string City { get; set; } [Required] public string PostalCode { get; set; } [Required] public string
public class Address
{
public long Id { get; set; }
[Required]
public string City { get; set; }
[Required]
public string PostalCode { get; set; }
[Required]
public string Street { get; set; }
}
订单类别:
public class Order
{
public long Id { get; set; }
public Address FirstAddress { get; set; }
public Address SecondAddress { get; set; }
public bool RequireSecondAddress { get; set; }
}
我希望始终验证Order.FirstAddress,但只有当Order.RequireSecondAddress设置为true时,才应验证Order.SecondAddress
有什么想法吗?:)
Chris使用数据注释几乎是不可能的,否则它将需要编写依赖于反射的丑陋代码,等等。。。(我想你明白了) 我建议你看一下这本书。它有一个好主意。下面是您的验证逻辑的样子:
public class AddressValidator : AbstractValidator<Address>
{
public AddressValidator()
{
RuleFor(x => x.City)
.NotEmpty();
RuleFor(x => x.PostalCode)
.NotEmpty();
RuleFor(x => x.Street)
.NotEmpty();
}
}
public class OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
RuleFor(x => x.FirstAddress)
.SetValidator(new AddressValidator());
RuleFor(x => x.SecondAddress)
.SetValidator(new AddressValidator())
.When(x => x.RequireSecondAddress);
}
}
公共类AddressValidator:AbstractValidator。以下条件验证文章可能会有所帮助:
谢谢!这正是我一直在寻找的。在FluentValidator中,客户端存在一些更复杂的验证问题,但我认为这不是一个大问题。现在我要学习更多关于FluentValidator的知识:)谢谢!