/// <summary> /// 傳入參數校驗過濾器 /// </summary> public class ValidateReqModelFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { if (!actionContext.ModelState.IsValid) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
////若是要自定義返回 //actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, new ResponseMessage() { Msg = false, Message = error });
} } }
[ValidateReqModelFilter] public class TestController : ControllerEduBase { /// <summary> /// 測試 /// </summary> [HttpPost] [Route("api/Test/saveSchool")] public JsonResult<ResponseMessage> Test(ReqTest req){
var result = new object();
return Json(result);
}
}
public class ReqSaveSchool { /// <summary> /// token /// </summary> [Required(AllowEmptyStrings = false, ErrorMessage = "Token is validate")] public string Token { get; set; } /// <summary> /// id /// </summary> [RegularExpression(@"^[0-9]\d*$",ErrorMessage = "Id is validate")] public int Id { get; set; } /// <summary> /// 名稱 /// </summary> [Required] [StringLength(50,ErrorMessage = "Name is exceeding the length limit")] public string Name { get; set; } }
測試結果:若是輸入參數校驗失敗,不會進入controller,直接返回錯誤信息。api