Итак, я нашел этот учебник, в котором был также исходный код примера, показывающего, как создать каскадный выпадающий список с использованием 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);
}
Тогда actiont, возвращающий 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>
Где и что я делаю не так?