如何为特定的Controller / Action禁用自动ModelState验证?

时间:2011-05-31 09:53:15

标签: asp.net-mvc asp.net-mvc-3

如上所述,我想为特定的Controller / Action禁用自动ModelState验证。

这可能吗?

2 个答案:

答案 0 :(得分:3)

考虑通过调用:

清除控制器操作中的Modelstate字典
Modelstate.Clear();

答案 1 :(得分:2)

我认为这是可能的。创建自定义ModelValidatorProvider。

public class CustomModelValidatorProvider 
             : DataAnnotationsModelValidatorProvider
{
    protected override IEnumerable<ModelValidator> GetValidators(
        ModelMetadata metadata, 
        ControllerContext context, 
        IEnumerable<Attribute> attributes)
    {
        return Enumerable.Empty<ModelValidator>();
    }
}

并在启动时设置此提供程序。

ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new CustomModelValidatorProvider());

这个怎么样?