如何根据第一个下拉选择的选择更新第二个下拉列表?

时间:2016-04-12 15:23:16

标签: jquery razor model-view-controller drop-down-menu

我有两个DropDownListFor帮助器,第二个的SelectList取决于第一个选择的值。

所以,我需要做的是:当用户从第一个DropDownListFor帮助器中选择一个值时,必须使用适当的值更新第二个DropDownListFor帮助器的SelectList。

如何使用jQuery更新此SelectList?

1 个答案:

答案 0 :(得分:1)

您需要收听第一个下拉列表中的change事件,读取所选值并使用此值向服务器发出ajax请求。有动作方法接受此值并返回第二个下拉列表的数据。在你的ajax调用回调中,读取回来的json数据,查看它并填充第二个下拉列表。

假设您的表单有2个下拉列表,一个用于国家,一个用于州

$(function(){

  $("#Country").change(function(){

     var countryId = $(this).val();
     var url = "@Url.Action("GetStates,"Country")"+countryId;

     $.getJSON(url,function(data){

         var options="";
         $.each(data,function(a,b){
           options+="<option value='"+ b.Value +"'>" + b.Text + "</option>";
         });        
         $("#State").html(options);
     });

  });

});

假设GetStates中的CountryController操作方法接受国家/地区ID并返回属于所选国家/地区的状态列表(具有值和文本属性)。

public ActionResult GetStates(int id)
{
   var dummyStates = new List<SelectListItem>
   {
     new SelectListItem { Value="1", Text="Michigan"},
     new SelectListItem { Value="2", Text="Florida"},
     new SelectListItem { Value="3", Text="Seattle"}
   };
   return Json(dummyStates,JsonRequestBehaviour.AllowGet);
}