这是我第一次使用 asp.net mvc webApi,我有 Post/Put 方法,其中有一个名为 ProductViewModel 的参数。Required
此 ViewModel 的某些属性具有要验证的数据注释,例如StringLenght
等...我有这样的 post 方法:
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; }
}
谢谢你。