首页 > 解决方案 > 禁用自动模型验证 ASP.NET Core MVC

问题描述

我有一个Save方法可以获取传入的视图模型。在 Viewmodel 中,我有一堆发生的自定义验证。

public class DealViewModel : IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
    }
}

public IActionResult SaveDeal(DealViewModel dealViewModel)
{
}

我想在它点击保存方法后运行验证,因为我需要从会话中获取信息更新视图模型然后验证。

这就是我验证的方式:

 var isValid = Validator.TryValidateObject(dealViewModel, context, results, true);

SaveDeal但是我的代码甚至在控制器中的方法中之前就命中了验证方法。

有没有办法阻止这种情况并在我准备好时强制验证?

标签: c#asp.net-mvcvalidationasp.net-core

解决方案


可能重复:在 ASP.Net Core 2 MVC 中禁用模型验证的正确方法

但这可能会有所帮助:https ://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-3.1#disable-validation

基本上,添加一个继承 IObjectModelValidator 但对 Validate 方法不执行任何操作的新类。还将它添加到依赖注入容器中。


推荐阅读