【问题标题】:Removing null/empty keys from a query string in asp.net MVC从 asp.net MVC 中的查询字符串中删除空/空键
【发布时间】:2010-11-12 10:44:47
【问题描述】:

有没有办法可以从 asp.net MVC 中的查询字符串中删除空键或空键?例如,我有一个页面在结果表上过滤数据,如果我搜索 John,查询字符串将重新显示为:

candidates?FirstName=John&LastName=&Credit=false&Previous=false&Education=&Progress=

而不是

candidates?FirstName=John

我查看了 URL 路由,但我不确定它是否应该用于类似这样的修饰,或者是否可以使用它来实现我的要求。

【问题讨论】:

    标签: asp.net asp.net-mvc routing query-string url-routing


    【解决方案1】:

    无论您使用什么 URL 生成器或控件,都需要特殊的逻辑来从列表中去除这些不需要的标签。对于通用 URL 生成器或控件来说,Credit=false 没用并不明显——难道Credit=true 不是默认值吗?同样,一个空字符串可能意味着什么。 (另外,Lastname=Lastname 不同。

    【讨论】:

    • 我知道为它编写实际逻辑由我负责,但我不确定应该在哪里或如何处理它,使用 URL 路由,在控制器内,或通过 IIS 完成一个附加组件,类似于 Apache 的 mod_rewrite。
    • 哦,我刚刚注意到您正在使用 asp.net-MVC,这使您的问题更加清晰。但是,这也让我没有资格回答,对不起:)。
    【解决方案2】:

    您是如何生成该 URL 的?使用路由,如果它们应该在查询字符串中,它应该可以正常工作。我们只为您指定的 RouteValues 生成查询字符串参数。

    我过去做过的一件事是为特定链接编写自己的辅助方法,在这些链接中我可能会传入一个对象以获取路由值,但想在将它传递给之前清除我不需要的值底层路由 API。这对我来说效果很好。

    【讨论】:

    • 在这种情况下,它不是由路由生成的,只是一个使用 get 方法细化查询的表单。有没有更好的方法来处理这个问题?
    • 我已经有一段时间没有问这个问题了,但这最终成为了我的解决方案,谢谢。
    【解决方案3】:

    我有时需要处理各种视图使用的部分路径值。

    然后我通常访问 routeDictionary 并更改它。您获得的好处是,代码很有可能会在路由更改中幸存下来,并且您可以在多个生成的 URL 中使用 routeValues。

    大多数人会争辩说,这段代码的最佳位置不是视图。但希望你能明白。

    查看代码:

       RouteValueDictionary routeValues = ViewContext.RouteData.Values;
       routeValues.Remove(...);
       routeValues.Add(...);
       routeValues["Key"] = ...;
    
       <%
             using (Html.BeginForm(
                 Url.RequestContext.RouteData.GetRequiredString("Action"),
                 Url.RequestContext.RouteData.GetRequiredString("Controller"),
                 routeValues,
                 FormMethod.Get))
       { %>
    

    【讨论】:

      【解决方案4】:

      也许使用这个Querystring Builder - 迭代 Request.QueryString 字典中的查询字符串并使用构建器构建一个新的(或者只是字符串连接它们)?

      【讨论】:

        猜你喜欢
        • 2013-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        • 2018-09-23
        • 2019-06-14
        • 2011-03-24
        相关资源
        最近更新 更多