ValidateInput(false)仍然在IValidatableObject中触发验证

时间:2011-10-08 14:43:53

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

我有一个控制器,在调用时我不想验证。

我的控制器:

[Authorize(Roles = "Admin")]
[HttpPost]
[ValidateInput(false)]
public ActionResult Delete(MyLINQClass model)
{
    // Do something
}

我的模特:

[MetadataType(typeof(MyLINQClass MetaData))]
public partial class MyLINQClass : DefaultModel, IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
         // Do validation
    }
}

我不希望触发验证,我认为添加[ValidateInput(false)]会有所帮助。但Validate()仍然被触发。

我正在使用ASP MVC 3和.NET 4.

1 个答案:

答案 0 :(得分:1)

[ValidateInput(false)]与模型验证无关。它禁用请求中的XSS字符的ASP.NET验证,例如<>,...当验证绑定MyViewModel参数时,默认模型绑定器会触发验证。如果您不想执行验证,只需编写另一个视图模型,删除操作将作为参数,并且不会有任何Validate方法。