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