MVC4 бритва заполнить выпадающий список с данными из JSON

0

У меня есть два dropdownlists для языков и стран

При выборе языка в раскрывающемся списке следует заполнить соответствующие страны в выпадающем списке страны

 @Html.DropDownList("LanguageSelectList", null, null, new { @class = "hyper-select fixedwidth300"})
@Html.DropDownList("CountrySelectList", null, null, new { @class = "hyper-select fixedwidth300" })

Вот мой сценарий jquery

 $("#LanguageSelectList").change(function (event) {
            $("#languageValidator").hide();
            var selectedLanguage = $("#LanguageSelectList").val();
            debugger;
            //--------
            if (selectedLanguage!='') {
                var url = '@Url.Action("GetCountryListByLanguage", "Options")';
                $.ajax({
                    type: "POST",
                    url: url,
                    data: { selectedLanguage: selectedLanguage },
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    global: false,
                    async: false,
                    success: function (data) {

                        var ddlCountrylist = $("#CountrySelectList");
                        debugger;
                        var jsonString =JSON.stringify(data);  
                        //here how to take data from jsonstring to countries dropdownlist


                    }

                });

            } else {  
                alert('no country returnned');


            }

            //--------------

        });

Я могу получить ожидаемый список стран в данных json, как указано ниже. Теперь как я могу заполнить раскрывающийся список моей страны.

jsonString="[{\"Selected\":false,\"Text\":\"n/a\",\"Value\":\"\"},{\"Selected\":false,\"Text\":\"China\",\"Value\":\"CN\"},{\"Selected\":false,\"Text\":\"Hong Kong\",\"Value\":\"HK\"},{\"Selected\":false,\"Text\":\"Singapore\",\"Value\":\"SG\"},{\"Selected\":false,\"Text\":\"Taiwan\",\"Value\":\"TW\"}]"
Теги:
asp.net-mvc-4

2 ответа

0
Лучший ответ

внутри вашего обработчика успеха просто перебирайте возвращаемый массив и добавляйте параметр для выпадающего списка для каждого элемента массива.

ddlCountrylist.find('option').remove(); 
$(data).each(function(i,v){
     $('<option value='+v.Value+'>'+v.Text+'</option>').appendTo(ddlCountrylist);
    });
1

В разделе успеха вашего вызова ajax для метода контроллера вы можете написать приведенный ниже код:

success: function (data) {
$('#CountrySelectList').empty();
$.each(data.agent, function() {
    $('#CountrySelectList').append(
        $('<option/>', {
            value: this.Value,
            html: this.Text
        })
    );    
});

}

Я не тестировал вышеуказанный код, но я надеюсь, что это определенно сработает

  • 0
    Я всегда должен проверять ваш код, прежде чем вставлять его в качестве ответа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню