作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次使用 asp.net mvc webApi,并且我有 Post/Put 方法,它有一个名为 ProductViewModel 的参数。此 ViewModel 的某些属性具有要验证的数据注释,例如 Required
, StringLenght
等等...我有这样的发布方法:
public HttpResponseMessage Post([FromBody] ProductViewModel value)
{
if (ModelState.IsValid)
{
// persist data here...
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.GetErrors());
}
我有 GetErrors()
方法作为获得 List<>
的扩展我的错误并传递给客户。我的问题是:为什么 ModelState 不起作用?
如果我将 null 传递到我的 ViewModel 的属性中,则此验证根本不起作用。 IsValid
属性始终为 true
.有没有办法解决这个问题并让 ModelState 工作,例如 MVC?
我的模型看起来像这样:
public class ProductViewModel
{
[Display(ResourceType = typeof(Resources.Global), Name = "Name")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(100, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string Name { get; set; }
[Display(ResourceType = typeof(Resources.Global), Name = "ShortName")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(20, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string ShortName { get; set; }
}
谢谢。
最佳答案
您能否确保将 Content-Type 作为请求的一部分传递? (如果未传递内容类型,则会设置特定类型的默认值,并且模型状态不会有错误...此错误最近已修复)。
此外,您还可以执行以下操作:
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState)
关于c# - 如何让 ModelState 在 asp.net mvc web api 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531641/
我是一名优秀的程序员,十分优秀!