そのため、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>
どこで何が間違っているのですか?