在我的解決方案我使用列表框中DISPLY列表像波紋管&也是我使用Chosen.js,這樣我可以選擇多條記錄。驗證列表視圖中使用註釋
@Html.ListBox("AllLanguages", new SelectList(ViewBag.Languages, "Id", "Language1"))
<div id="languagesDiv"></div>
使用jQuery我creting我的模型綁定屬性的隱藏字段,如波紋管
$(document).ready(function() {
$("#AllLanguages").chosen();
$("#AllLanguages").on("change", function() {
$("#languagesDiv").empty();
var languagesCount = 0;
$("#AllLanguages option:selected").each(function() {
var lang = "<input type='hidden' id='MovieLanguages[" + languagesCount + "].LanguageId' name='MovieLanguages[" + languagesCount + "].LanguageId' value='" + $(this).val() + "' />";
$("#languagesDiv").append(lang);
languagesCount++;
});
});
});
這是什麼jQuery將做的是,它會爲每個選定的值隱藏字段,如波紋管
<input type='hidden' id='MovieLanguages[0].LanguageId' name='MovieLanguages[0].LanguageId' value='1' />
<input type='hidden' id='MovieLanguages[1].LanguageId' name='MovieLanguages[1].LanguageId' value='2' />
現在我想確保用戶應該從列表框中選擇至少一個值。
我這個型號屬性列表
public IList<Language> MovieLanguages { get; set; }
我使用@Html.ValidationMessageFor(x => x.MovieLanguages)
試過,但這個不起作用。
如何驗證呢? 如果還有更好的方法可以做到這一點,那麼請讓我知道
沒有適合您需求的驗證屬性。您始終可以對選定的選項進行計數,如果爲零,請阻止提交併顯示錯誤消息。但是,爲什麼你要創建隱藏的輸入? - 當您提交表單時,您的'AllLanguages'屬性包含所選選項的值 –
@StephenMuecke如何將所選值直接綁定到我的Model屬性?與模型屬性 –
您查看模型更新的問題需要一個屬性'IEnumerable的 SelectedLanguages'然後將其'@ Html.ListBoxFor(M => m.SelectedLanguages,新的SelectList(ViewBag.Languages, 「ID」, 「LANGUAGE1」))'當你提交,SelectedLanguages'的'價值將包含所有選擇的ID的(雖然我建議你的視圖模型包含的屬性'的SelectList Languages'而不是使用'ViewBag') –