В моем решении я использую listbox для отображения списка, например, & Также я использую Chosen.js, чтобы выбрать несколько записей.Подтвердить список, используя аннотации
@Html.ListBox("AllLanguages", new SelectList(ViewBag.Languages, "Id", "Language1"))
<div id="languagesDiv"></div>
с помощью JQuery Я привык это скрытые поля для моей модели связанного приложения собственности как сильфон
$(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' будет содержать все выбранные идентификаторы (хотя я рекомендую, чтобы ваша модель представления содержала свойство' SelectList Languages', а не использование 'ViewBag') –