保持状态在非模型控制中 - MVC

时间:2009-11-06 10:03:31

标签: asp.net-mvc session-state

好的,我对MVC很新,所以如果我问一个非常直截了当的问题,请耐心等待。我正在尝试在MVC中开发一个项目,其中视图上的某些控件将保持状态但实际上不是模型的一部分。我想根据各种下拉菜单的内容在页面上显示Asp.net图表和xslt网格。这些数据将来自模型,但是dropdownmenu将是不变的,所以当你在给定的选择上发布帖子时,它会保存Dropdownlist选项并在Asp.net 2.0的回发中显示它们吗?

2 个答案:

答案 0 :(得分:0)

如果您使用标准的Html助手,它会变得非常复杂,因为您必须构建自己的 SelectListItem 类以传递到视图中并告诉控件选择哪一个并将其弹出一个ViewData:

List<SelectListItem> items = new List<SelectListItem>();
    items.Add(new SelectListItem
    {
      Text = "Option1",
      Value = "1",
      Selected = (Request["dropdown"] == "Option1")
    });
    items.Add(new SelectListItem
    {
        Text = "Option2",
        Value = "2",
        Selected = (Request["dropdown"] == "Option2")
    });
    items.Add(new SelectListItem
    {
        Text = "Option3",
        Value = "3",
        Selected = (Request["dropdown"] == "Option3")
    });

ViewData["items"];

然后,您可以在视图中呈现此内容,如下所示:

<%= Html.DropdownList("Dropdown1", (IEnumerable<SelectListItem>)ViewData["items"])

答案 1 :(得分:0)

我过去一直在解决此问题的一种方法是在下拉列表更改事件上执行ajax请求(使用下拉列表选择值序列化表单或仅在查询字符串中传递参数)。服务器(控制器操作)接受此请求并返回包含内容的部分视图。 客户接受该内容并将(替换)放入某个div。

这样我就不必考虑dropdownlist选择的项目,因为我从不重新加载整个页面。