Gil*_*rdo 3 .net c# asp.net asp.net-web-api
我为我的 Web api 设置了很多模型,但没有一个模型具有针对它们的任何属性。这是一个简单的控制器示例
public async Task<IActionResult> PutAsync([FromBody] ChartModel model)
{
....
}
Run Code Online (Sandbox Code Playgroud)
现在,如果用户尝试在模型中上传无效数据类型(例如,在数字属性中键入字母),那么我的控制器会收到 null。
处理这个问题最好、最简单的方法是什么?如果这些特定方法的模型为 null,我想返回 BadRequest。
我可以向每个方法添加如下所示的内容。
if (model == null)
return new BadRequestObject("Invalid model");
Run Code Online (Sandbox Code Playgroud)
但我确信一定有一些我可以做的事情,而且更干净整洁,我只是不知道是什么
你可以做这样的事情
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var modelState = actionContext.ModelState;
if (!modelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.NotAcceptable, modelState);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器方法之上使用它
[ValidateModel]
public async Task<IActionResult> PutAsync([FromBody] ChartModel model)
{
// your code goes here
}
Run Code Online (Sandbox Code Playgroud)
并且您不必每次都在代码中检查 ModelState 是否有效。
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |