添加ApiActionAttribute类 并继承 ActionFilterAttribute 代码如下:
/// <summary>
/// Action过虑器
/// </summary>
public class ApiActionAttribute : ActionFilterAttribute
{
/// <summary>
/// 在Action方法调用前使用,使用场景:如何验证登录等。
/// </summary>
/// <param name="filterContext"></param>
public override void OnActionExecuting(HttpActionContext filterContext)
{
if (!filterContext.ModelState.IsValid)
{
// 取得发生例外时的错误讯息
var errorMessage = "|";
foreach (var item in filterContext.ModelState.Values)
{
foreach (var err in item.Errors)
{
errorMessage += err.ErrorMessage + "|";
}
}
var result = ApiResultEntity.Error(errorMessage, "400");
// 重新打包回传的讯息
filterContext.Response = filterContext.Request.CreateResponse(HttpStatusCode.OK, result);
return;
}
}
在HttpComfiguration中注入这个Filter config.Filters.Add(new ApiActionAttribute ());
测试代码如下:
/// <summary>
/// 模型验证测试
/// </summary>
/// <param name="t"></param>
[HttpPost]
public void ModelVie(Text t)
{
}
/// <summary>
/// 测试
/// </summary>
public class Text
{
/// <summary>
/// 主键
/// </summary>
public int Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
[Required(ErrorMessage = "Name是必须的")]
public string Name { get; set; }
[Required(ErrorMessage = "TEPPT不能为空")]
public string TEPPT { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
}
返回结果:
{ "status": 400, "data": null, "msg": "|Name是必须的|TEPPT不能为空|" }