Я пытаюсь создать каскадное раскрывающееся меню. Мой контроллер выглядит следующим образом инициализировать вид ..Population A Select List Dynamically MVC
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 пустое выпадающее меню, как и ожидалось.
Теперь, когда вы выбираете первый раскрывающийся список, я хочу вызвать действие в моем контроллере, чтобы заполнить второе раскрывающееся меню. Здесь я немного туманный по коду в действии, чтобы заполнить второе раскрывающееся меню. Я хочу использовать что-то вроде этого, чтобы вызвать вызов действия ..
$("#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??
}
Это хорошая практика, чтобы положить и, если эти методы в мой контроллер? Или должен ли частный метод быть помещен куда-то еще. Просто попытайтесь изучить хорошую практику при работе с mvc? – MTL323
Я только что вставил образец вырезать и вставить. Если это был я. Я просто сделаю все это частью действия. Вы также можете посмотреть, есть ли служба списка избранных, которую вы используете для возврата этих вещей. Если вы делаете это часто. В качестве альтернативы вы можете посмотреть WebAPI, который возвращает Json. Мы используем WebAPI для всех наших вещей Json. – GraemeMiller
Можете ли вы указать мне пример, где у вас это есть. Я нажимаю контроллер, но когда я вернусь к javascript, возвращаемый JSON неправильно отформатирован, чтобы заполнить список выбора. Он возвращает это как имя «" System.Data.Entity.DynamicProxies.Course_C81CDD1DDC4D486F471F64D1F95990CD3518507F0B5BB9F718C0910A56B73D12 "" и значение = null для каждого курса. Данные, выходящие из контроллера, точны и правильно запрошены, так что это неправильно с моим кодом javascript. – MTL323