ASP.NET MVC3 каскадный DropDownList не работает должным образом - PullRequest
0 голосов
/ 26 июня 2011

Я использую каскадный выпадающий список.Когда я выбираю make it, отправлять makeId на сервер через веб-сервис и возвращать модели.Затем я добавляю модели в выпадающий список

Проблема в том,Если я проверяю выпадающий список моделей в Firefox с помощью инструмента Firebug, я могу видеть только что добавленные модели, но когда я нажимаю, он открывается пустым.

Я использую jQuery Mobile и jQuery Selectbox.

Вот мой код:

$(document).ready(function () {
        $('#Makes').change(function () {
            getModels();
        });
    });

 function getModels() {    
    var make = $('#Makes').val();           
    $.ajax({
        type: "POST",
        url: "/Services/CarService.asmx/Models",
        data: "{makeId: '" + make + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            alert(response.d);
            var models = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            $('#Models').attr('disabled', false).removeOption(/./);         
            for (var i = 0; i < models.length; i++) {
                var val = models[i];
                var text = models[i];
                $('#Models').addOption(val, text, false);    
                alert(models[i]);
            }
        }
    });
}


@Html.DropDownList("Makes", "Please select make")
<select id="Models"></select>

[WebMethod]
public List<string> Models(int makeId)
{
    var dataContext = new SearchModel();
    var models = from m in dataContext.GetAllModels()
                 where m.Id == makeId
                 select m.Model;
    return models.ToList();
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Я нашел решение для моей проблемы

Обновление выбора

Если вы манипулируете выбором через JavaScript, вы должны вызвать для него метод refresh для обновления визуального стиля.Вот пример:

var myselect = $("select#foo");
myselect[0].selectedIndex = 3;
myselect.selectmenu("refresh");
0 голосов
/ 26 июня 2011

попробуй использовать

var ModelSel = document.getElementById('Models');
for (var i = 0; i < models.length; i++) {
     var val = models[i];
     var text = models[i];
     ModelSel.options[i]=new Option(val, text);    
}
...