我正在尝试创建级联下拉列表。我的控制器看起来像这样初始化视图..
public ActionResult Create()
{
var model = new RoundDetailViewModel();
model.AvailableFacilities = new SelectList(db.Facilities, "FacilityId", "Facility_Name");
model.AvailableCourses = new SelectList(Enumerable.Empty<Course>(), "CourseId", "Course_Name");
model.AvailableTeeTypes= new SelectList(Enumerable.Empty<TeeType>(), "TeeTypeId", "Name");
return View(model);
}
这将填充第一个下拉列表,并按预期创建2个空下拉列表。
现在,在选择第一个下拉列表时,我想在我的控制器中调用一个Action来填充第二个下拉列表。这是我对填充第二个下拉列表的操作中的代码有点模糊的地方。我想用这样的东西触发调用动作..
$("#ddlFacility").change(function () {
var selectedFacility = $(this).val();
if (selectedFacility != null && selectedFacility != '') {
$.getJSON("@Url.Action("GetCourse")", { facility: selectedFacility }, function (courses) {
var coursesSelect = $('#ddlCourse');
coursesSelect.empty();
$.each(courses, function (index, course) {
coursesSelect.append($('<option/>', {
value: course.value,
text: course.text
}));
});
});
}
});
public ActionResult Courses(int facilityId)
{
//WHAT GOES HERE TO POPULATE SELECT LIST??
}
答案 0 :(得分:0)
需要返回JsonResult并允许Get(如果这是您决定要做的事情)或者您需要将其设为POST并对其执行POST。
像
这样的东西public JsonResult GetCourses(int id)
{
var Courses= db.Courses.Where(a=>facilityId==id).ToList();
SelectList list = new SelectList(Courses,"Text", "Value");
return Json(list , JsonRequestBehavior.AllowGet);
}