c# - ModelState 验证仅针对少数操作触发
问题描述
我有两个动作:
[HttpGet]
[ResponseType(typeof(GetStuffResponse))]
public IHttpActionResult GetStuff([FromUri] RequestObj1 request){}
[HttpPost]
[ResponseType(typeof(ValidateStuffResponse))]
public IHttpActionResult ValidateStuff(RequestObj2 request){}
我的请求对象是:
public class RequestObj1{
public int UserId {get;set;}
//Other properties
}
public class RequestObj2{
public int UserId {get;set;}
//Other properties
}
我对这两个操作都应用了验证过滤器:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class ValidateModelAttribute : ActionFilterAttribute
{
#region Public Methods
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
#endregion
}
[ValidateModel]
属性应用于包含这些操作的控制器级别。
现在,当我运行时,GetStuffs
会抛出以下ModelState
异常,而ValidateStuffs
不会。
"UserId": "The valid is required"
不知道这里发生了什么。两种操作都通过验证过滤器,但是一种方法没有ValidationState
错误,而另一种方法没有错误。两者都通过UserId
空。不知道为什么它会触发一个而不是另一个?任何想法?
解决方案
推荐阅读
- node.js - Mongoose:更新数组中的对象(批量写入)
- regex - 正则表达式(记事本++)插入,而不是替换
- asp.net - 登录 Blazor 服务器应用程序时如何显示加载图标?
- php - PHP 没有得到改造发送的 JSON 值
- go - 使用 goavro 处理多种类型的解码数据
- javafx - 在 Javafx 中设置 DatePicker 箭头按钮的样式
- ruby-on-rails - 从文件夹中获取照片时,Rails、活动存储、attach_one 照片不起作用
- reactivesearch - ReactiveSearch 自定义组件和清除过滤器
- flutter - 在 Flutter/Dart AVD 中颜色“锁定”为相似颜色
- python - KivyMD 具有不同“迭代”选项卡的动态选项卡管理