首页 > 解决方案 > ASP.NET Web Api > 发生验证错误时停止操作

问题描述

我正在开发一个 Web API 项目。我System.Web.Http.ApiController用作控制器的基础

using System.Net;
using System.Web.Http;
using project.Models;

namespace project.Controllers
{
    public class DemoController : ApiController
    {
        [HttpPost]
        [Route("api/demo/submit")]
        public  object Post([FromBody] FormDataModel test)
        {
            ...
        }
    }
}

虽然我的模型是

using System;
using System.ComponentModel.DataAnnotations;

namespace server.Models
{
    public class FormDataModel
    {
        [Required(ErrorMessage = "Phone is required")]
        [Phone(ErrorMessage = "Invalid Phone")]
        public string phone { get; set; }
    }
}

当我发送无效的 POST 请求时 - 该Post操作仍在执行。我可以跟踪无效请求,ModelState.IsValid但这似乎是一个多余的步骤,因为如果验证失败,我总是希望我的操作以相同形式的响应停止执行。

是否有一种标准方法可以在一个地方管理整个控制器/应用程序的验证失败?

谢谢!

标签: c#asp.netvalidationasp.net-web-api

解决方案


我相信您可以使用 ActionFilters 做到这一点。查看这篇优秀的文章:

https://smellyc0de.wordpress.com/2017/08/23/web-api-2-centralised-model-state-validation/


推荐阅读