从List创建MVC查询字符串

时间:2013-07-17 21:58:36

标签: c# asp.net-mvc-3 query-string model-binding

是否有可能在代码中生成一个查询字符串,该查询字符串将被绑定到像这样的控制器变量

MyController(List<long?> queryList)
{

//我希望使用defualt模型绑定器绑定queryList。但是我不知道如何生成这里可以接受的源字符串     }

在我的代码中,我需要在像这样的函数中生成查询字符串

GenerateBindable(List<long?> list)
{
    string listQueryString="";
    ....
    //What do I need to do here?
}

我试图为此找到一个内置函数,但即使是ActionLink帮助器也没有达到我的预期。结果就是这个

我/ URL / PATH?A = System.Collections.Generic.List%601%5BSystem.Nullable%601%5BSystem.Int64%5D%5D

看起来它只是在集合上做了一个ToString,显然不会起作用。

1 个答案:

答案 0 :(得分:0)

您可以通过在控制器中创建路由值字典来实现此目的。

var rv = new RouteValueDictionary();
int i = 0;
queryList.ForEach(t => { rv.Add("a[" + (++i) + "]", t); });

让我们假设您将此路线值字典添加到viewbag(或您的模型)。我将使用viewbag进行演示,但我总是建议您使用模型。

ViewBag.RouteValues = rv;

最后在您的视图中,使用路线值字典创建一个动作链接。

 @Html.ActionLink("About", "About", (RouteValueDictionary)ViewBag.RouteValues)
相关问题