asp.net mvc webApi を使用したのはこれが初めてで、ProductViewModel というパラメーターを持つ Post/Put メソッドがあります。Required
このViewModelの一部のプロパティには、などの検証するデータ注釈があり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 を渡すと、この検証は機能しません。 IsValid
プロパティは常にtrue
. これを回避して MVC などの ModelState を機能させる方法はありますか?
私のモデルは次のようになります。
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; }
}
ありがとうございました。