1

カスケード ドロップダウンを作成しようとしています。私のコントローラーは、ビューを初期化するためにこのように見えます..

  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 つの空のドロップダウンも作成されます。

最初のドロップダウンを選択したら、コントローラーでアクションを呼び出して、2 番目のドロップダウンに入力します。これは、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??           

        }
4

1 に答える 1

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);
}
于 2013-03-04T00:42:19.407 に答える