我在控制器端有这个代码来初始化下拉列表
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”未定义。
每次页面重新加载,我都希望下拉列表保留所选值。能帮忙吗?
答案 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;%表示法