jt0*_*000 11 c# asp.net-web-api2
我们有几个模型通过JsonProperty覆盖名称,但是当我们通过ModelState获得验证错误时会出现问题.例如:
class MyModel
{
[JsonProperty("id")]
[Required]
public string MyModelId {get;set;}
}
class MyModelController
{
public IHttpActionResult Post([FromBody] MyModel model)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
/* etc... */
}
}
Run Code Online (Sandbox Code Playgroud)
上述帖子将返回The MyModelId field is required.不准确的错误.我们想这样说The id field is required..我们尝试使用[DataMember(Name="id")]但获得了相同的结果.
问题1:除了在每个[Required]属性上提供我们自己的错误消息之外,有没有办法让ModelState错误显示JSON属性名而不是C#属性名?
我一直在玩这个并找到一个"自己动手"的方法,用于使用自定义属性名称重新创建错误消息.我真的希望有一个内置的方法来做到这一点,但这似乎做了...
https://gist.github.com/Blackbaud-JasonTremper/b64dc6ddb460afa1698daa6d075857e4
问题2:可以假设ModelState.Key与<parameterName>.<reflectedProperty>语法匹配,或者是否存在可能不正确的情况?
问题3:是否有更简单的方法来确定JSON参数名称应该是什么,而不是通过反射[DataMember]或[JsonProperty]属性进行搜索?
您尝试过使用DisplayName属性吗?
此外,您还可以将错误消息分配给[Required]属性。
[Required(ErrorMessage = "Name is required")]
| 归档时间: |
|
| 查看次数: |
1727 次 |
| 最近记录: |