.NET VERSION : .net framework 4.6.1 WebAPI 2
沒有想到在測試ModelBinding的時候卻發現這個問題
查了一下資料這個問題在.NET Core 2.0才修正 , 而且是需要特別設定 isValid才會是false
如果我想要某一些Action 傳入的parameter 必須不為null應該怎麼辦呢?
這個時候可以加 filter
public class ModelValidateFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// 剃除掉Action Parameter 是null的request
/// </summary>
/// <param name="httpActionContext"></param>
public override void OnActionExecuting(HttpActionContext httpActionContext)
{
if (httpActionContext.ActionArguments.Any(v => v.Value == null))
{
httpActionContext.Response = httpActionContext.Request.CreateResponse(HttpStatusCode.BadRequest);
}
base.OnActionExecuting(httpActionContext);
}
}
之後在你的Action上面加上這個Attribute就可以囉
[ModelValidateFilter]
public IHttpActionResult MyAction(LoginModel login)
{
....
}
相關連結:
ModelState.IsValid reports valid model while it is null
[Required] and [BindRequired] in ASP.NET Core MVC
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你