Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Модель Asp.Net MVC с соответствующими раскрывающимися списками

Автор вопроса: CraigОтветов: 1

Я создаю экран в своем приложении C # Asp.Net MVC, в котором есть несколько связанных раскрывающихся списков. Например, я выбираю "Категория", а затем во втором раскрывающемся списке должны отображаться все связанные подкатегории для выбранной категории.

Итак, будет ли модель содержать список, используемый для построения раскрывающегося списка категорий, а затем список, изначально пустой. При выборе категории мне нужно отправить сообщение назад, передав идентификатор выбранной категории, затем заполнить список ‹> подкатегории ... и затем создать раскрывающийся список подкатегорий?

Надеюсь, кто-то может помочь с дизайном моей модели. Модель также будет иметь довольно много данных, не связанных со списком, для редактируемого элемента. И я думаю, что модели также понадобится "CategorySelectedId", чтобы я знал, что было выбрано?

drop-down-menu

Ответы

Ответ 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;}
}

Конечно, вы можете добавить атрибуты проверки и т.д.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы