我有一个带有下拉列表和分页系统的视图。当我点击其中一个分页链接时,我需要保留下拉列表的选定索引值。
这是下拉列表:
@Html.DropDownList("typeId", types, "-- Filter by type --", new { style= "width: 110px;", onchange = "location.href='" + Url.Action("List", new { month = selectedMonth, year = selectedYear }) + "?typeId=' + $(this).val()" })
分页系统:
<div style="margin-top: 15px">
<span>
@Html.ActionLink("First", "List", new { month = months[0].Item1, year = months[0].Item3 })
</span>
<span style="margin-right: 15px">
@Html.ActionLink("Previous", "List", new { month = previousMonth, year = previousMonthYear })
</span>
@foreach (var entry in months)
{
if (selectedMonth == entry.Item1 && selectedYear == entry.Item3)
{
<span>
@Html.ActionLink(entry.Item2, "List", new { month = entry.Item1, year = entry.Item3 }, new { @class = "current" })
</span>
}
else
{
<span>
@Html.ActionLink(entry.Item2, "List", new { month = entry.Item1, year = entry.Item3 })
</span>
}
}
<span style="margin-left: 15px">
@Html.ActionLink("Next", "List", new { month = nextMonth, year = nextMonthYear })
</span>
<span>
@Html.ActionLink("Last", "List", new { month = months[11].Item1, year = months[11].Item3 })
</span>
</div>
任何想法都赞赏。
PD:我想将所选值作为路线值传递给分页链接点击。
我试着这样做:
@Html.ActionLink("Last", "List", new { month = months[11].Item1, year = months[11].Item3, typeId = "$('#typeId option:selected')" })
但是我从客户端(:)错误中检测到了一个潜在危险的Request.Path值。如何防止此错误?
答案 0 :(得分:0)
如果有回发下拉列表会因为它是MVC而失去其值,我们无法使用ViewState。所以我建议的是:
不确定它对您当前的结构是否有帮助。
答案 1 :(得分:0)
一个技巧可能是当你使用下拉菜单切换时使用AJAX加载下一页,或者在查询字符串和页面加载中设置页码,从查询字符串中获取页码并设置所选值下拉。
答案 2 :(得分:0)
找到一个解决方法(在我的同事的帮助下):一个老式的HTML链接,我在这里设置了这样的URL:
<a href="@(Url.Action("List", "Notifications", new { month = months[0].Item1, year = months[0].Item3 }) + (typeId.HasValue ? "/" + typeId.Value : ""))">First</a>