2013-12-19 5 views
0

у меня есть два DropDownLists для языков и странMVC4 бритва заполнения DropDownList с данными JSON

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

@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\"}]" 

ответ

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

Я должен всегда проверять свой код, прежде чем вставлять его в качестве ответа. – Deffiss

Смежные вопросы