私の MVC フォームでは、ドロップダウン ボックスを ViewModel の列挙にバインドする必要があります。私が見つけた最良の方法は、ここで説明されています。
最初は動作しているように見えましたが、フォームに検証を追加した今、ViewModel にバインドされていないことがわかりました。
これが私のかみそりのコードです:
<div class="editor-field">
@Html.DropDownListFor(model => model.response,
new SelectList(Enum.GetValues(typeof(Vouchers.Models.ResponseType))),
"Please Select")
</div>
フィールドのビューモデルの定義は次のとおりです。
[DisplayName("Response")]
[Range(1, int.MaxValue, ErrorMessage = "You must select a response before submitting this form.")]
public ResponseType response { get; set; }
問題は、フォームを送信できないことです。ドロップダウンから応答を選択した後でも、範囲属性の検証エラー メッセージが表示され、クライアント側の検証によってフォームが送信されません。
これは、ドロップダウンの SelectList に、基になる整数値ではなく、列挙型の文字列名のみが含まれているためだと思います。
どうすればこの問題を解決できますか?