2011-11-10 138 views
0

我对控制器侧这个代码初始化下拉Html.dropdownlist不保留所选择的值

 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() %>); 
      } 

所以,每当我改变下拉的值,行动被调用如上所示。的可视数据[“Actionfilter”]也需要在此行由用户选择的值,但是当控制回来视图,

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

,它说将值“全部”是未定义的。

每次页面重新加载时,我都希望下拉菜单保留选定的值。你能帮忙吗?

+0

使用cookie?或会话变量? – ManseUK

+0

你能举个例子吗?我如何实现它? – user1005310

回答

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> 

也就是说剃刀语法,切换到<%符号如果你不使用剃须刀

+0

user1005310我更改了我编辑过的解决方案的HTML部分 –