MVC раскрывающиеся списки связаны в зависимости от значения другого раскрывающегося списка - PullRequest
3 голосов
/ 26 мая 2011

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

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

Я создал выпадающие списки способом, аналогичным this

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

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

1 голос
/ 26 мая 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», если вы используете таблицу маршрутов по умолчанию (или вам нужно создать специальную запись в таблице маршрутов с пользовательскими настройками) ивернуть частичное представление (без главной страницы) со списком опций для вашего ddl2, например:

<option value="1">First</option>
<option selected value="2">Second</option>
<option value="3">Third</option>
0 голосов
/ 26 мая 2011

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

...