私のビュー モデルには、DropDownListFor によって選択された、[必須] null 非許容の int プロパティがあります。選択するリストが空の場合、ModelState.IsValid は true です。
私のモデルには Required int プロパティがあります:
public class MyModel
{
[Required]
public int PickedValue { get; set;}
IEnumerable<SelectListItem> Items { get; set; }
}
<select>
Create ビューで、要素をレンダリングします。
@Html.DropDownListFor(model => model.PickedValue, model.Items)
私のコントローラーでは、model.Items
リストが空の場合 (選択する要素がない場合)ModelState.IsValid
は true です。
[HttpPost]
public ActionResult Create( MyModel model )
{
if( ModelState.IsValid )
{
// true, and ModelState.Keys doesn't contain PickedValue because it was never POSTed.
}
//...
}
さて、次の場合、問題は解決します。
PickedValue
(Nullable
)int?
、または<select>
-に空のアイテムがある場合@Html.DropDownListFor(model => model.PickedValue, model.Items, ""
、または- クライアント側の検証が有効になっている場合 (アクションが起動されないため)。
のプロパティの一部が POST データから欠落している場合に強制する方法はありModelState.IsValid
ますか? これはデフォルトの動作ではないでしょうか?false
MyModel
[Required]