问问题
1447 次
2 回答
3
侦听第一个下拉列表的更改事件,然后以格式加载第二个下拉列表的内容JSON
并将其注入第二个下拉列表
<select id="country">
<option value='1'>USA</option>
<option value='2'>Canada</option>
</select>
<select id="States"></select>
和脚本
$(function(){
$("#country").change(function(){
var _this=$(this);
var items="";
$.getJSON("@Url.Action("GetStates","Country")/"+_this.val(),function(data){
if(data.Status==="Success")
{
$.each(data.Items,function(index, item){
items=+"<option value='"+item.ID+'">"+item.Name+"</option>";
});
}
$("#states").html(items);
});
});
});
假设您的GetStates
操作方法返回JSON
具有 ID 和名称的数据,如下所示。
public ActionResult GetStates(int id)
{
List<State> stateList=yourRepositary.GetStatesForCountry(id);
return Json(new { Status="Success", Items=stateList},
JsonRequestBehaviour.AllowGet);
}
假设GetStatesForCountry
方法返回一个包含ID
和Name
作为属性的 State 对象列表。
于 2012-12-17T13:19:20.930 回答
0
jQuery 是你最好的朋友。首先将更改事件绑定到您的下拉列表 A,然后对服务器进行 ajax 调用。最后接受响应并将其设置为您的下拉列表 B
$('#ddlA').change(function() {
$('#ddlB').load('server/pageThatReturnsHtml')
});
这假设 'server/pageThatReturnsHtml' 返回 html,例如:
<option value="option1" selected="selected">Option 1</option>
<option value="option2">Option 2</option>
但是您也可以返回一个 json 对象并遍历结果以将项目添加到您的 ddl B
于 2012-12-17T13:14:11.253 回答