0

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

我的控制器:

[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。

4

1 回答 1

1

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

于 2011-10-08T14:46:21.030 回答