Обновление DropDrownList в ASP.NET MVC, когда пользователь выбирает опцию un в другом DropDrownList - PullRequest
3 голосов
/ 06 января 2009

Любой, кто знает, как создать комбо со значениями, которые зависят от выбора пользователя, мне нужно комбо, Страна и Регион, Когда пользователь выбирает страну, мне нужно перейти в базу данных и получить регион страны, Любой знает как это сделать, если посибил с помощью AJAX.

Спасибо.

Ответы [ 3 ]

8 голосов
/ 06 января 2009

Вам нужно использовать определенную библиотеку Ajax?

Ajax.Net Control Toolkit имеет элемент управления Cascading Dropdown , предварительно созданный для этой функции.


Пропущена часть MVC, в этом случае Ajax Control Toolkit не будет работать. JQuery, вероятно, является лучшим вариантом, поскольку он делает Ajax чрезвычайно простым для кодирования, и MS официально поддерживает его в сочетании с инфраструктурой MVC.

Если вы создали службу RESTful на своем сайте (должно быть много документации о том, как это сделать), вы можете вернуть json-ответ через jQuery, например:

Разметка:

<select id="opt1">
  <option value='1'>Option 1</option>
  <option value='2'>Option 2</option>
</select>

<select id="opt2" disabled></select>

Предполагая, что служба примет 'id' в качестве параметра и возвратит объект json, используя следующую схему, например:

[
  { name: 'option1', value: '1'},
  { name: 'option2', value: '2'}
]

Вы добавили бы этот javascript на страницу:

$(function() {
  $('select#opt1').change(function(){
    $.getJSON('/data/myservice',{id: this.value},
      function(response) {
        var options = '';
        for (var i = 0; i < response.length; i++) {
          options += "<option value='" + response[i].value + "'>"
                  +  response[i].name + "</option>";
        }
        $('select#opt2').removeAttr('disabled').html(options);
      });
  });
});

Краткое объяснение того, что там происходит; Код jQuery может быть немного похож на очистку лука, поэтому я буду брать его уровень за раз:

$(function(){}) является сокращением для $(document).ready(function(){}), поэтому он запускает функцию при возникновении события готовности.

$('select#opt1').change(function(){}) находит <select> с именем 'opt1' и запускает функцию при возникновении события изменения.

$.getJSON() Аякс призывает вас. Ответы JSON возвращаются в виде строк и должны быть проанализированы в объекты JSON, что автоматически делает $ .getJSON для вас. Первое поле - это URL службы, второе - пара имя / значение, которое преобразуется в строку запроса, а третье - функция обратного вызова для обработки ответа.

1 голос
/ 07 января 2009

Я бы порекомендовал использовать jQuery и MVC JsonResult для достижения этой функциональности. Есть что-то в вашей модели, чтобы получить новую информацию из базы данных на основе заданного пользователем ввода. JsonResult вернет это обратно в представление, и вы будете использовать jQuery, чтобы заполнить раскрывающийся список соответственно.

Очень базовый пример с использованием jQuery и JsonResult платформы MVC доступен здесь

0 голосов
/ 07 января 2009

Я бы также порекомендовал jQuery, действия Json полезны, если вы идете и получаете данные асинхронно. Конечным результатом будет установка цепочки со списком, есть много примеров того, как сделать это в jQuery, это довольно хорошо с живой демонстрацией и кодом. Надеюсь, это вам поможет 1003 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...