Html.dropdownlist未保留所选值

时间:2011-11-10 14:49:06

标签: jquery asp.net-mvc

我在控制器端有这个代码来初始化下拉列表

        List<SelectListItem> items = new List<SelectListItem>();
        items.Add(new SelectListItem
        {Text = "All",
         Value = "All"

        });
        items.Add(new SelectListItem
        {
            Text = "val1",
            Value = "val1"
        });
        items.Add(new SelectListItem
        {
            Text = "val2",
            Value = "val2"
        });

        ViewData["DDLItems"] = items;

        // I have added this code because I am passing the selection back to this     action
        if (Activefilter == null){ Activefilter = "All" ;}

        ViewData["Activefilter"] = Activefilter;

在视图中,我有这段代码

 <%= Html.DropDownList("ActiveFilter", (IEnumerable<SelectListItem>)ViewData["DDLItems"], new { onChange = "func(1)" })%>

对于jquery,我有这个

$(document).ready(function() {

                      $('#Activefilter').val(<%= ViewData["Activefilter"].ToString() %>);  
           }

所以每当我更改下拉列表的值时,就会调用该操作,如上所示。 viewdata [“Actionfilter”]也获取用户选择的值,但当控件返回视图时,

$('#Filter').val(<%= ViewData["Activefilter"].ToString() %>); 

在这一行中,它表示值“All”未定义。

每次页面重新加载,我都希望下拉列表保留所选值。能帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用SelectList()并在构造函数中传递所选项目。而不是使用列表。 remeber selected

为什么在此示例中未选择所选值

        List<SelectListItem> items = new List<SelectListItem>();

        items.Add(new SelectListItem
        {
            Text = "All",
            Value = "All"

        });
        items.Add(new SelectListItem
        {
            Text = "val1",
            Value = "val1",
        });
        items.Add(new SelectListItem
        {
            Text = "val2",
            Value = "val2","
        });


        string filter = "val1";
        ViewData["DDLItems1"] = new SelectList(items, "Text", "Value", filter);

在视图上,这是代码

<div>   @Html.DropDownList("FilterName", (SelectList)ViewData["DDLItems1"])</div>

这是剃刀语法,如果你没有使用剃须刀,请切换到&lt;%表示法