【发布时间】:2017-11-02 17:05:58
【问题描述】:
我有一个简单的模型,例如:
public class Employer
{
[Required(ErrorMessage = "Please specify id")]
public int Id { get; set; }
[MaxLength(256, ErrorMessage = "Max lenght should be less than 256")]
[Required(ErrorMessage = "Please specify Name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please specify id of organization")]
public int OrganizationId { get; set; }
}
那么控制器是:
public IHttpActionResult Post(Employer employer)
{
if(!IsActiveOrganization(employer.OrganizationId))
{
ModelState.AddModelError(nameof(employer.OrganizationId), "The organization is not active!");
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
}
如您所见,我正在尝试在创建新雇主之前验证模型。所以,当我通过无效id 的模型时,响应会像:
{
"message": "The request is invalid.",
"modelState": {
"employer.Id": [
"Please specify id."
]
}
}
我想检查OrganizationId 是否处于活动状态。为此我有一个方法IsActiveOrganization 它检查并返回true/false。如果false 那么我需要添加模型错误并向客户端返回 400 Bad Request。一切正常,但按照我实施的方式,我会得到如下响应:
{
"message": "The request is invalid.",
"modelState": {
"employer.Id": [
"Please specify id"
],
"OrganizationId": [
"The organization is not active!"
]
}
}
如何为我自己的错误 OrganizationId 添加前缀到 ModelState 错误键(如 employer.Id)?我应该硬编码employer.OrganizationId 还是有更好的方法?如果我需要添加模式详细信息,请告诉我。谢谢。
【问题讨论】:
-
以下答案是否解决了您的问题?
-
@MarkC。不,请帮忙
标签: c# asp.net-mvc validation asp.net-web-api modelstate