gpt4 book ai didi

asp.net-mvc - 在空模型的情况下返回错误响应

转载 作者:行者123 更新时间:2023-12-02 12:31:03 25 4
gpt4 key购买 nike

在我的 ASP.NET MVC API 应用程序中,如果缺少一些 Required 字段,我可以返回有用的 ErrorResponse:

return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);

-

"Message": "The request is invalid.",
"ModelState": {
"myModel.FooA": [
"The FooA is required."
],
"myModel.FooC": [
"The FooC property is required."
],
"myModel.FooD": [
"The FooD property is required."
]
}

但是 this answer 确认,NULL 模型验证。由于我不允许这样做,我如何返回同样有用的错误响应,说明所有所需的值?我知道我可以为每个属性手动添加 ModelError,但我怀疑 CreateErrorResponse 可能有一种方法可以为我做到这一点。

最佳答案

你使用的是mvc3还是web-api?你的标签表明你正在使用 mvc,但你的开头句暗示了 web-api。如果使用 mvc3,您可以使用以下内容:

在调用 ModelState.IsValid 之前在 Controller 中添加:

if (modelObj == null)
{
ModelState.Clear();
var blankModel = new MyClass();
TryValidateModel(blankModel);
return View("About", blankModel);
}

如果您正在使用 web-api 并且假设您正在使用 System.ComponentModel.DataAnnotations 您可以使用以下内容:

ModelState.Clear();

var model = new MyClass();
var results = new List<ValidationResult>();
Validator.TryValidateObject(model, new ValidationContext(model, null, null),
results, true);

var modelState = new ModelStateDictionary();
foreach (var validationResult in results)
modelState.AddModelError(validationResult.MemberNames.ToArray()[0],
validationResult.ErrorMessage);

return Request.CreateErrorResponse(HttpStatusCode.BadRequest, modelState);

关于asp.net-mvc - 在空模型的情况下返回错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com