MVC Foolproof Validation ライブラリを使用して、依存する要件を作成しています。
public bool IsRequired { get; set; }
[RequiredIfTrue("IsRequired", ErrorMessage = "This field is required")]
public int RequiredIfTrueSelectID { get; set; }
これはクライアント側で完全に機能し、RequiredIfTrueSelectID
値なしでフォームを送信できます (つまり、値は 0) が、 false[HttpPost]
がModelState.IsValid
返され、即時ウィンドウに次の結果が表示されます。
myViewModel.IsRequired
true
ModelState["RequiredIfTrueSelectID"].Errors[0]
{System.Web.Mvc.ModelError}
ErrorMessage: "A value is required."
Exception: null
RequiredIfTrueSelectID の値をポストバックしていることを確認しています (上記の最初の即時ウィンドウ クエリでわかるように)。「値が必要です」というメッセージが表示されるのはなぜですか? また、このエラーを抑制するにはどうすればよいですか?
ちなみに私はMVC5です。ModelState
2 年前の Foolproof の最後の更新以降、実装が変更された可能性がありますか? 最近公開された、フールプルーフのように機能するライブラリを知っている人はいますか?
コントローラーの方法:
[HttpPost]
public virtual ActionResult ValidationTest(TestViewModel vm)
{ //breakpoint here to check ModelState.IsValid
return View(vm);
}