MvcContrib网格小写排序查询字符串

发布于 2024-12-04 10:45:20 字数 337 浏览 0 评论 0原文

当您使用开箱即用的 MvcContrib 网格排序时,它会自动将查询字符串 Column 和 Direction 附加到您的 URL。例如:

www.mysite.com/listing?Column=Bedrooms&Direction=Ascending

有没有办法将查询字符串(列和方向)小写,以便您得到:

www.mysite.com/listing?column=Bedrooms&direction=Ascending

我正在使用 ASP.NET MVC 3 和 MvcContrib 版本 3。

When you use MvcContrib grid sorting out-of-the-box, it automatically appends the querystrings Column and Direction to your URL. For instance:

www.mysite.com/listing?Column=Bedrooms&Direction=Ascending

Is there a way to lowercase the querystrings (Column and Direction) so that you get this:

www.mysite.com/listing?column=Bedrooms&direction=Ascending

I'm using ASP.NET MVC 3 with MvcContrib version 3.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沙沙粒小 2024-12-11 10:45:20

不幸的是,这些值被硬编码在 MvcContrib.UI.Grid.HtmlTableGridRenderer 类中:

// MvcContrib.UI.Grid.HtmlTableGridRenderer<T>
private RouteValueDictionary CreateRouteValuesForSortOptions(GridSortOptions sortOptions, string prefix)
{
    if (string.IsNullOrEmpty(prefix))
    {
        return new RouteValueDictionary(sortOptions);
    }
    return new RouteValueDictionary(new Dictionary<string, object>
    {
        {
            prefix + ".Column", 
            sortOptions.Column
        }, 
        {
            prefix + ".Direction", 
            sortOptions.Direction
        }
    });
}

CreateRouteValuesForSortOptions 私有方法由 RenderHeaderText 虚拟调用受保护的方法。因此,如果您想要小写参数名称,一种可能是编写自定义 GridRenderer

另一种可能性是编写自定义路由以使 url 小写。您可以查看以下博客文章 说明了如何将应用程序中的所有 url 设为小写,但您可以根据需要进行调整。

Unfortunately those values are hardcoded in the MvcContrib.UI.Grid.HtmlTableGridRenderer<T> class:

// MvcContrib.UI.Grid.HtmlTableGridRenderer<T>
private RouteValueDictionary CreateRouteValuesForSortOptions(GridSortOptions sortOptions, string prefix)
{
    if (string.IsNullOrEmpty(prefix))
    {
        return new RouteValueDictionary(sortOptions);
    }
    return new RouteValueDictionary(new Dictionary<string, object>
    {
        {
            prefix + ".Column", 
            sortOptions.Column
        }, 
        {
            prefix + ".Direction", 
            sortOptions.Direction
        }
    });
}

The CreateRouteValuesForSortOptions private method is invoked by the RenderHeaderText virtual protected method. So if you want to have lowercase parameter names one possibility would be to write a custom GridRenderer<T>.

Another possibility is to write a custom Route to make urls lowercase. You may take a look at the following blog post which illustrates how to make all urls in an application to be lowercase but you could tweak it to your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文