По вашему мнению, вы бы определили два раскрывающихся списка, например:
@Html.DropDownListFor(model => model.Provinces.ProvinceID, Model.Province, new { id = "ddlProvinces", onChange = "$:populateCitiesDropdown()" })
@Html.DropDownListFor(model => model.City.CityID, Model.City, new { id = "ddlCities" })
В Javascript ваш метод заполнения будет выглядеть следующим образом:
function populateIssuesDropdown() {
$("#ddlCities").empty();
var typeID = getProvinceID();
$.getJSON('@Url.Action("GetCitiesByProvince", "some_controller")?TypeID=' + typeID, function (result) {
$.each(result, function () {
$("<option>").attr("value", this.CityID).text(this.City).appendTo("#ddlCities");
});
});
}
function getProvinceID() {
var provinceID = $("#ddlProvinces").val();
return provinceID;
}
В вашемКонтроллер:
public JsonResult GetCitiesByProvince(int ProvinceID)
{
var result = _someRepository.GetCities(ProvinceID).Select(
c => new { CityID = c.CityID, City = c.City });
JsonResult jsonResult = new JsonResult { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
return jsonResult;
}