
但為了效能跟 ISO 8601 日期格式考量
在我們開發的系統中就把 JavaScriptSerializer 給換成 Json.Net 了 (如下 & 作法的參考網址)
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>
if (!ModelState.IsValid) return new HttpStatusCodeResult(HttpStatusCode.BadRequest)
public class ModelStateValidationFilter : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
if (!filterContext.Controller.ViewData.ModelState.IsValid)
{
var errors = from errs in (
from modelstate in filterContext.Controller.ViewData.ModelState.Values
select modelstate.Errors
)
where errs.Count > 0
select errs[0].ErrorMessage;
// 用 Elmah 記錄誰在哪邊沒通過驗證
Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception(String.Join(",",errors.ToArray())));
// 回應錯誤
throw new HttpException(400);
}
}
}
filters.Add(new ModelStateValidationFilter());