3
這是我第一次使用asp.net mvc webApi,並且我有Post/Put方法,它有一個名爲ProductViewModel的參數。該視圖模型的一些性質有數據註釋驗證,如Required
,StringLenght
等...我有POST方法是這樣的:如何獲取ModelState在asp.net mvc web api上的工作?
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:由小提琴手應用/ json',是不是? 我得到了我的對象'ProductViewModel'構造並填充了屬性,但ModelState.IsValid始終爲true,如果有REquired爲null的屬性並不重要,'IsValid'總是爲true。它是一個asp.net mvc webapi的bug嗎? – 2013-03-20 19:10:45
內容類型看起來是正確的......你可以分享你的模型是什麼樣子,也可以從提琴手的原始請求? – 2013-03-20 19:11:37
我編輯了我的帖子,看看我的模型,只有兩個屬性有一些驗證。我通過小提琴手傳過來的jSon是:'{Name:null,ShortName:「」}',只是爲了測試驗證,但驗證通過,我得到了我的ORM工具的其他例外(nhibernate)。 – 2013-03-20 19:17:04