Выпадающие списки MVC связаны в зависимости от значения другого раскрывающегося списка

Я пытаюсь написать веб-страницу MVC с двумя раскрывающимися списками. Содержание второго списка зависит от того, что выбрано в первом.

Кажется, не существует однозначного способа сделать это с использованием встроенных функций MVC, поэтому мне придется использовать свои собственные. Однако я не знаю, как лучше всего получить всю необходимую мне функциональность ... это "то же самое, что и веб-формы" :)

Я создал раскрывающиеся списки аналогично этому < / а>

Однако я не уверен, как разработать это так, чтобы, если в первом списке есть «выбранный» элемент при первой привязке, он будет проходить через автоматическую привязку второго списка при загрузке страницы.

Изменить: Чтобы быть ясным, у меня есть возможность привязать отфильтрованный список ко второму раскрывающемуся списку. Однако, если моя модель содержит выбор для первого раскрывающегося списка, выбор установлен правильно, но второй раскрывающийся список не заполняется.

(должен ли я заявлять, что я новичок в MVC, а Javascript для меня как какой-то чужой язык?)

Edit2: Я подумал об этом немного больше. Ясно, что на меня сильно повлияло время разработки веб-форм, и я еще не совсем понял MVC. Я думаю, что на самом деле у меня есть некоторые вещи, которые я должен уловить в своей модели (т.е. если у меня уже есть информация для установки двух раскрывающихся списков, тогда я должен каким-то образом уловить это в контроллере и создать предварительно заданные раскрывающиеся списки. Вместо того, чтобы пытаться создать метод типа "ondatabound" и вызвать это представление (что было моим первоначальным намерением) ... Теперь мне нужно пойти и подумать, как это сделать :)


person Loofer    schedule 26.05.2011    source источник


Ответы (3)


Это - одна из лучших реализаций, которые я нашел. Этот вопрос также обсуждался здесь.

person danmiser    schedule 26.05.2011

Ваша задача состоит из 3 подзадач:

  1. Вы должны ajax получить список элементов для второго ddl при изменении выбора первого ddl с использованием выбранного значения
  2. Вы должны обработать действие получения списка элементов для 2-го ddl вашим контроллером и вернуть представление с определенным содержимым второго ddl.
  3. Вам следует обновить содержимое второго ddl, получив результат обработанного действия

<script type="text/javascript">

    $(function(){
        $("form #ddl_1").change(function(){
            $.get({ // get request
                   url: "@Url.Action("MyController", "GetList"})" + "/" + $(this).val,
                   success: function(data){ // updating
                       $("form #ddl_2").html(data);
                   }
        })
    });

</script>

Действие «GetList» должно принимать параметр «id», если вы используете таблицу маршрутов по умолчанию (или вам нужно создать специальную запись в таблице маршрутов с помощью custom) и возвращать частичное представление (без главной страницы) со списком параметров для вашего ddl2, например:

<option value="1">First</option>
<option selected value="2">Second</option>
<option value="3">Third</option>
person Evgeny Levin    schedule 26.05.2011

См. Это сообщение в блоге для создания каскадных раскрывающихся списков в asp.net mvc с загружаемым исходным кодом.

person Muhammad Adeel Zahid    schedule 26.05.2011