所以,我发现这个教程也有该示例的代码源,显示了如何使用Jquery制作级联下拉列表。 我试图将该代码用于我自己的项目示例,但它似乎没有用。
public class IndexViewModel
{
//1st DDL ID
public int grupa_id
{
get;
set;
}
//1st DropDownList Values
public List<SelectListItem> GrupeValues
{
get;
set;
}
//2nd DDL ID
public int produs_id
{
get;
set;
}
//2nd DropDownList Values
public List<SelectListItem> ProduseValues
{
get;
set;
}
}
财务总监:
public ActionResult Blabla()
{
DataRepository objRepository = new DataRepository();
IndexViewModel objIndexViewModel = new IndexViewModel();
objIndexViewModel.GrupeValues = objRepository.GetGrupa();
//Get the first item of the First drop down list(State ddl)
string first = objIndexViewModel.GrupeValues[0].Value;
//Get the City names based on the first Item in the State ddl
objIndexViewModel.ProduseValues = objRepository.GetProduse(Convert.ToInt16(first));
return View(objIndexViewModel);
}
然后返回jsonresult的动作:
public JsonResult Cities_SelectedState(int param)
{
DataRepository objRepository = new DataRepository();
JsonResult result = new JsonResult();
var vCities = objRepository.GetProduse(Convert.ToInt16(param));
result.Data = vCities.ToList();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result;
}
观点:
<script type="text/javascript">
$(document).ready(function () {
$("#grupa_id").change(function () {
var url = '<%= Url.Content("~/") %>' + "Home/Cities_SelectedState";
var ddlsource = "#grupa_id";
var ddltarget = "#produs_id";
$.getJSON(url, { param: $(ddlsource).val() }, function (data) {
$(ddltarget).empty();
$.each(data, function (index, optionData) {
$(ddltarget).append("<option value='" + optionData.Text + "'>" + optionData.Value + "</option>");
});
});
});
});
</script>
<p>
<%:Html.Label("Grupe:") %>
<%:Html.DropDownListFor(m=>m.grupa_id, Model.GrupeValues) %>
<%:Html.Label("Produse:") %>
<%:Html.DropDownListFor(m=>m.produs_id, Model.ProduseValues)%>
</p>
我在哪里以及我做错了什么?
答案 0 :(得分:0)
您正在呼叫Home/Cities_SelectedState
,但我看不到您将int param
传递到哪里 - 也许这就是您所缺少的。