加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC ModelState始终对Fluent验证有效

发布时间:2020-12-16 06:31:30 所属栏目:asp.Net 来源:网络整理
导读:我试图使用ASP.NET MVC项目的流畅验证.我正在尝试验证我的视图模型. 这是我的viewmodel, [Validator(typeof(ProductCreateValidator))]public class ProductCreate{ public string ProductCategory { get; set; } public string ProductName { get; set; } .
我试图使用ASP.NET MVC项目的流畅验证.我正在尝试验证我的视图模型.

这是我的viewmodel,

[Validator(typeof(ProductCreateValidator))]
public class ProductCreate
{
    public string ProductCategory   { get; set; }
    public string ProductName       { get; set; }
    ....
}

这是我的验证员班,

public class ProductCreateValidator : AbstractValidator<ProductCreate> 
{
    public ProductCreateValidator()
    {
        RuleFor(product => product.ProductCategory).NotNull();
        RuleFor(product => product.ProductName).NotNull();
    }
}

在我的控制器中,我正在检查我的ModelState是否有效,

[HttpPost]
public ActionResult Create(ProductCreate model)
{
    /* This is a method in viewmodel that fills dropdownlists from db */
    model.FillDropDownLists();

    /* Here this is always valid */
    if (ModelState.IsValid)
    {
        SaveProduct(model);
        return RedirectToAction("Index");
    }

    // If we got this far,something failed,redisplay form
    return View(model);
}

这就是我所拥有的.我的问题是ModelState.IsValid在我的viewmodel完全为空时返回true.我是否需要手动配置Fluent验证,以便可以将模型错误添加到ModalState?

解决方法

正如 documentation所解释的那样,请确保在Application_Start中添加以下行以交换数据注释模型元数据提供程序并使用流畅验证:

FluentValidationModelValidatorProvider.Configure();

你的行动中的以下评论也让我害怕:

/* This is a method in viewmodel that fills dropdownlists from db */
model.FillDropDownLists();

View模型不应该知道数据库的含义.因此在视图模型中使用这样的方法是一种非常错误的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读