2013-01-15 33 views
0

我正在创建一个使用多个存储过程来填充下拉列表的页面。存储过程的参数是前一个下拉列表的选择(即它们需要按顺序运行)。什么是实现此功能的最佳方式?我正在使用ASP MVC,并且很难将结果传递给视图模型以再次呈现。多个存储过程ASP MVC

回答

0

如果我正确理解你的问题,你正试图有级联下拉。 并且您使用存储过程绑定您的下拉列表。

下面是一个例子:我有两个下拉菜单。学校和课程。当你在学校改变选定的价值时,课程下拉将改变它的价值。

这是控制器:

public ActionResult SchoolList(int id) 
    { 
     IEnumerable<SelectListItem> schools = new Util().GetSchoolSelectList(id); 
     if (HttpContext.Request.IsAjaxRequest()) 
      return Json(schools, JsonRequestBehavior.AllowGet); 

     return View(schools); 
    } 

    public ActionResult CourseList(int id) 
    { 
     IEnumerable<SelectListItem> courses = new Util().GetCourseSelectList(id); 
     if (HttpContext.Request.IsAjaxRequest()) 
      return Json(courses, JsonRequestBehavior.AllowGet); 
     return View(courses); 
    } 

这是jQuery的:

$("#Schools").change(function() { 
     $.getJSON("/Account/CourseList/" + $("#Schools").val(), function (data) { 
      var items = "<option>Select your Course</option>"; 
      $.each(data, function (i, course) { 
       items += "<option value='" + course.Value + "'>" + course.Text + "</option>"; 
      }); 
      $("#Courses").html(items); 
     }); 
    }); 

这是HTML:

<select id="Schools" name="UserSchool"></select> 

<select id="Courses" name="UserCourse"></select>