オプションのドロップダウンがあり、選択が行われないと検証エラーが発生します。オプションにする方法はありますが、選択が行われた場合はバインドします。
この回答リンクを取得しましたが、実際にはバインディングを停止します。それは私が望んでいることではありません。また、目立たない検証を完全に取り除き、古典的な方法でそれを実行し、http投稿から必要なものを取得する方法も知っていますが、mvc4かどうかを知りたいですクライアント検証はこれに対して柔軟です。基本的に、私はサーバー側を検証し、例外をスローしてから ModelState に追加しているため、mvc 組み込みのクライアント検証からの部分的なサポートが必要であり、ドロップダウンを除いて正常に動作します。
私のモデルにはプロパティに「必須」属性がありません。これが私のフォームです:
@using (Html.BeginForm("Send", "Mail", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<fieldset>
<legend>New Support Ticket: </legend>
<ul>
<li>
<label for="@Model.TypeLookupId">Type</label>
@Html.DropDownListFor(m => m.TypeLookupId, Model.Types)
</li>
<li>
<label for="@Model.IssueName">Subject</label>
@Html.TextBoxFor(m => m.IssueName, Model.IssueName)
</li>
<li>
<label for="@Model.IssueNewNote">Comment</label>
@Html.TextAreaFor(m => m.IssueNewNote, string.Empty)
</li>
<li>
<input type="file" name="files" id="files" multiple="multiple"/>
</li>
<li>
<input type="submit" value="Save" />
</li>
</ul>
</fieldset>
}