c# - 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
但这似乎是一个多余的步骤,因为如果验证失败,我总是希望我的操作以相同形式的响应停止执行。
是否有一种标准方法可以在一个地方管理整个控制器/应用程序的验证失败?
谢谢!
解决方案
我相信您可以使用 ActionFilters 做到这一点。查看这篇优秀的文章:
https://smellyc0de.wordpress.com/2017/08/23/web-api-2-centralised-model-state-validation/
推荐阅读
- node.js - 如何在不解析 Node JS 中的整个文件的情况下获取工作簿表的名称
- python - 如何在 for 循环中保存 i 的值而不让迭代影响它
- mysql - Nodejs mysql查询返回奇怪的结果而不是记录
- apache-spark - 如何连接两列并在pyspark中的新列周围添加括号
- django - /new_bid/1 处的 Django 错误 NoReverseMatch 为 'addwatchlist' 反向,但未找到参数 '('',)'
- javascript - 你如何通过 npx 而不是 npm start 运行 electronjs?
- javascript - React with Highway 中的 virtualbis 页面转换
- django - Django 博客评论
- python - 指数函数的 SCIP 优化
- node.js - 这可以在用户移动设备上发送 OTP 的同时将 OTP 存储在数据库中吗