当前位置:  开发笔记 > 后端 > 正文

Asp.Net MVC - FluentValidation

如何解决《Asp.NetMVC-FluentValidation》经验,为你挑选了1个好方法。

在Asp.Net MVC中有没有办法使用某种流畅的验证?

我的意思是,而不是像我那样验证我的poco:

public class User {

    [Required]
    public int Id { get; set; }

有类似的东西(在外部类):

User.Validate("Required", "Id");

在Asp.Net MVC 2(或3)中有可能吗?

我知道FluentValidation库存在,但我想知道Asp.Net MVC的核心是否允许这样做.

我不喜欢那样污染我的POCO.另外,如果我需要验证会发生什么,让我们说BeginDate在EndDate之前?使用属性,您无法做到这一点.



1> Darin Dimitr..:

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
{
    public MyViewModelValidator()
    {
        RuleFor(x => x.Id)
            .NotNull();
        RuleFor(x => x.EndDate)
            .GreaterThan(x => x.StartDate);
    }
}

然后你的控制器动作:

[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);
}

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有