问题描述
|
因此,我发现本教程还有示例的代码源,该示例显示了如何使用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>
我在哪里和哪里做错了?
解决方法
您正在呼叫
Home/Cities_SelectedState
,但我看不到您将int param
传递到的位置---也许那是您所缺少的。