【发布时间】:2011-08-28 05:45:20
【问题描述】:
我有以下问题:我正在使用的系统中最重要的功能之一是搜索页面。在此页面中,我有一些选项,例如每页记录、开始日期、结束日期和有问题的选项:类型。一个人必须有可能选择一种以上的类型(大多数时候,它们都会被选中)。为了完成这项工作,我创建了以下内容:
<div>
<label>Eventos:</label>
<div>
@Html.ListBox("events", Model.Events, new { style = "width: 100%" })
</div>
</div>
它创建了一个列表框,我可以在其中选择多个选项,当提交表单时,我的查询字符串将如下所示:
/5?period=9&events=1&events=3&recordsPerPage=10
可以看到创建了两个事件(这是我之前所说的类型)。此页面的操作方法将List<long> 作为其参数之一,它表示两个events 值。当我想将它与 MVC Contrib 一起使用时,问题就开始了。他们的寻呼机工作得很好,但是按照我的要求,我创建了另一个寻呼机,它显示了指向用户所在页面之前和之前的五个页面的链接。为此,在我的部分代码中,我必须执行以下操作(这与 MVC Contrib 寻呼机非常相似,有效):
public RouteValueDictionary GetRoute(int page)
{
var routeValues = new RouteValueDictionary();
foreach (var key in Context.Request.QueryString.AllKeys.Where(key => key != null))
{
routeValues[key] = Context.Request.QueryString[key];
}
routeValues["page"] = page;
return routeValues;
}
然后:
@Html.ActionLink(page.ToString(), action, controller, GetRoute(page), null)
问题在于它是一个字典,这使得我第二次为routeValues["events"] 设置值时会擦除以前的值。
你们知道如何使用它吗?
【问题讨论】:
标签: c# asp.net-mvc-3 dictionary mvccontrib