Я создаю экран в своем приложении C # Asp.Net MVC, в котором есть несколько связанных раскрывающихся списков. Например, я выбираю "Категория", а затем во втором раскрывающемся списке должны отображаться все связанные подкатегории для выбранной категории.
Итак, будет ли модель содержать список, используемый для построения раскрывающегося списка категорий, а затем список, изначально пустой. При выборе категории мне нужно отправить сообщение назад, передав идентификатор выбранной категории, затем заполнить список ‹> подкатегории ... и затем создать раскрывающийся список подкатегорий?
Надеюсь, кто-то может помочь с дизайном моей модели. Модель также будет иметь довольно много данных, не связанных со списком, для редактируемого элемента. И я думаю, что модели также понадобится "CategorySelectedId", чтобы я знал, что было выбрано?
Ответ 1 · рейтинг 1 · Gideon
Лучше всего использовать для этого AJAX. Вам нужно будет подключить событие change к вашему первому полю выбора, и как только оно будет изменено, вы сделаете запрос AJAX с выбранным значением для некоторого Action. Действие вернет список JSON, который будет проанализирован и помещен в следующий select box.
Обновить
Модель для действия возврата JSON может быть действительно анонимным типом или IEnumerable из SelectListItem. Используйте Linq: `mycollection.select(item=> new SelectListItem() { Name = item.Name, Value = item.ID.ToString() });
Если предположить, что страница выглядит так:
<form>
<select id="MainCat" name="MainCatID">
<option value="1">First option</option>
<option value="2">First option</option>
<option value="3">First option</option>
</select>
<select id="SubCat" name="SubCatID" disabled="disabled">
<option value=""> -- Please select a main category -- </option>
</select>
</form>
Ваша модель будет выглядеть так:
public class MyModel {
public int MainCatID {get;set;}
public int SubCatID {get;set;}
public IEnumerable<SelectListItem> MainCats {get;set;}
}
Конечно, вы можете добавить атрибуты проверки и т.д.