【问题标题】:Create MVC querystring from a List从列表创建 MVC 查询字符串
【发布时间】:2013-07-17 21:58:35
【问题描述】:

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

MyController(List<long?> queryList)
{

//我希望使用默认模型绑定器绑定查询列表。但我不知道如何生成这里可以接受的源字符串 }

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

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

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

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

似乎它只是对集合做了一个 ToString,这显然是行不通的。

【问题讨论】:

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


    【解决方案1】:

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

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

    假设您将此路由值字典添加到视图包(或您的模型)。我将使用 viewbag 进行演示,但我始终建议您使用模型。

    ViewBag.RouteValues = rv;
    

    最后,在您看来,只需使用路由值字典创建一个操作链接。

     @Html.ActionLink("About", "About", (RouteValueDictionary)ViewBag.RouteValues)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      相关资源
      最近更新 更多