Mel*_*sus 3 validation asp.net-mvc
在Asp.Net MVC中有没有办法使用某种流畅的验证?
我的意思是,而不是像我那样验证我的poco:
public class User {
[Required]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
有类似的东西(在外部类):
User.Validate("Required", "Id");
Run Code Online (Sandbox Code Playgroud)
在Asp.Net MVC 2(或3)中有可能吗?
我知道FluentValidation库存在,但我想知道Asp.Net MVC的核心是否允许这样做.
我不喜欢那样污染我的POCO.另外,如果我需要验证会发生什么,让我们说BeginDate在EndDate之前?使用属性,您无法做到这一点.
FluentValidation 与ASP.NET MVC很好地集成.它附带一个模型绑定器,允许自动应用验证规则.
例如:
[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
public int? Id { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Id)
.NotNull();
RuleFor(x => x.EndDate)
.GreaterThan(x => x.StartDate);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的控制器动作:
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (ModelState.IsValid)
{
// The model is valid => process it
return RedirectToAction("Success");
}
// Validation failed => redisplay the view in order to show error
// messages
return View(model);
}
Run Code Online (Sandbox Code Playgroud)