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

时间:2011-09-10 16:48:51

标签: asp.net-mvc-3 mvccontrib mvccontrib-grid

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

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

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

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

我正在使用带有MvcContrib版本3的ASP.NET MVC 3。

1 个答案:

答案 0 :(得分:0)

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

// 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<T>

另一种可能性是编写自定义Route以使url小写。您可以查看following blog post,其中说明了如何将应用程序中的所有网址设置为小写,但您可以根据需要进行调整。