我已经做到了。其中所选值位于隐藏字段中。
并确保您的控制器方法返回带有两个字段的JSON对象。
<script type="text/javascript">
var ddlCountry;
var ddlStateID;
function pageLoad() {
ddlStateID = $get("StateID");
ddlCountry = $get("CountryID");
$addHandler(ddlCountry, "change", bindOptions);
bindOptions();
}
function bindOptions() {
ddlStateID.options.length = 0;
var CountryID = ddlCountry.value;
var stateSelected = document.getElementById('StateSelected').value;
if (CountryID) {
var url = "/Student/States/" + CountryID;
$.getJSON(url, null, function(data) {
$("#StateID").empty();
$.each(data, function(index, optionData) {
if (stateSelected == optionData.ID) {
$("#StateID").append("<option value='"
+ optionData.ID
+ "' selected>" + optionData.Name
+ "</option>");
}
else {
$("#StateID").append("<option value='"
+ optionData.ID
+ "'>" + optionData.Name
+ "</option>");
};
});
});
};
}
补充
控制器(我的URL是学生/州,即在学生控制器中,我输入以下代码)
public ActionResult States(int id)
{
var states = db.states.Select(s => new { ID = s.ID, Name = s.Name }).OrderBy(s=>s.Name).ToList();
return Json(states);
}
您可以返回任意数量的字段,但如果其中任何一个字段的值为空,那么它将不会在JSON对象中转换。我不确定,但当我返回整个状态对象时,它不起作用。当时状态表有一个名为deletedby的字段,它包含空值!。但是当我只返回两个“需要”字段时,它就正常工作了!