1

这是我第一次在这个板子上写。我是一名意大利学生,请原谅我的英语不好。很长一段时间以来,我都使用 ASP.NET Web Forms 开发了我的 Web 应用程序;现在想迁移到 ASP.NET MVC 框架。所以我想问两个问题:

  1. 场景 1:我在视图中的一个表单中有两个 DropDownList (元素)。第一个 DropDownList 包含一个类别列表:我希望在第一个 DropDownList 中更改项目时,第二个是自动加载子类别列表。在 Web 表单中,我经常使用 UpdatePanel 来完成这项工作。但是现在在 MVC 中我不能使用它。我曾尝试使用 jQuery AJAX,但代码不起作用。我该如何实施这项工作?请举个例子?

  2. 场景 2:我有一个分步向导表单。所以,我需要逐步传递(记忆)数据。我在哪里可以记住这些数据?在会话中?一个建议?

非常感谢,弗朗西斯科。

4

1 回答 1

3

1)当用户选择第一个下拉列表时,您可以使用 jQuery ajax 获取第二个下拉列表的项目。

假设您的 Category 类看起来像这样

public class Category
{
  public ID { set;get;}
  public string Name { set;get;}
}

视图中的下拉菜单是这样的

@Html.DropDownListFor(x => x.SelectedCategoryID, 
                  new SelectList(Model.Categories, "ID", "Name"), "Select")

@Html.DropDownListFor(x => x.SelectedSubCategoryID, 
                  new SelectList(Model.SubCategories, "ID", "Name"), "Select")

JSON现在有一些 javascript 来监听第一个下拉列表的更改事件并获取值,对接受类别 ID 的操作方法进行 ajax 调用,并以格式返回子类别列表。

<script type="text/javascript">
    $(function () {
        $("#SelectedCategoryID").change(function () {
            var self = $(this);
            var items="";
            $.getJSON("@Url.Action("Index", "GetSubCategories")?id="+self.val(),
                                                                  function(data){
                $.each(data,function(index,item){
                  items+="<option value='"+item.ID+"'>"+item.Name+"</option>";
                });
               $("#SelectedSubCategoryID").html(items);
            });
        });
    });
</script>

现在您应该有一个操作方法,它以格式GetSubCategories返回(子)类别列表JSON

public ActionResult GetSubCategories(int id)
{
  List<Category> subCategoryList=new List<Category>();
  //to do : fill the list of (sub) categories to the
  // above list for the category id passed to this method.
  return Json(subCategoryList,Json.RequestBehaviour.AllowGet); 
}

2)会话应该是好的。

于 2012-09-22T19:05:14.310 回答