2016-06-09 105 views

回答

1

嘗試使用

[ValidateInput(假)]

與行動方法

+0

我們正在使用自定義驗證。但默認驗證執行?我們要禁用默認驗證 –

0

沒有爲網絡API,將禁用驗證沒有ValidateInput屬性,但你可以很容易地定義一個將重置在ModelState

public class ValidateInput : ActionFilterAttribute 
{ 
    private readonly bool _enableValidation; 

    public ValidateInput(bool enableValidation) 
    { 
     _enableValidation = enableValidation; 
    } 

    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     if(_enableValidation) 
     { 
      return; 
     } 

     if (!actionContext.ModelState.IsValid) 
     { 
      actionContext.ModelState.Clear(); 
     } 
    } 
} 

然後在你的控制器使用:

public class SomeController : ApiController 
{ 
    [ValidateInput(false)] 
    public IHttpActionResult Post(MyDto dto) 
    { 
     // ModelState.IsValid is always true now 
     return Ok(); 
    } 
} 

public class MyDto 
{ 
    [Required] 
    public int Id { get; set; } 
}