监听第一个下拉列表的更改事件,读取选定的值,将其发送到一个操作方法,该方法返回第二个下拉列表内容的 JSON 数据。读取 JSON 并加载到第二个下拉列表。
$(function(){
$("#CountryDropdDown").change(function(e){
var country=$(this).val();
$.getJSON("@Url.Action("States","Home")?id="+country,function(data){
var items="";
$.each(data,function(index,item){
items+="<option value='"+item.ID+"'>"+item.Name+"</option>";
});
$("#States").html(items);
});
});
});
假设您的 Homecontroller 有一个名为 States 的操作方法,它接受一个 id 并以以下格式返回 JSON
[
{ "ID": "1", "Name": "MI" },
{ "ID": "2", "Name": "NY" }
]
编辑: 根据评论中的问题
假设您有一个像这样的状态实体类。
public class StateVM
{
public int ID { set;get;}
public string Name { set;get;}
}
因此,在 action 方法中,构建一个StateVM
类列表并使用该Json
方法从中创建JSON数据。
public AtionResult States(int id)
{
var stateList=GetStatesForCountry(id);
return Json(stateList,JsonRequestBehavior.AllowGet);
}
private List<StateVM> GetStatesForCountry(id);
{
List<StateVM> states=new List<StateVM>();
//Hard coding the items for demo.
// TO DO : Replace the below lines with code for reading
// your database and filling the list
states.Add(new StateVM { ID=1, Name="MI"});
states.Add(new StateVM { ID=2, Name="NY"});
return states;
}