Asp.net mvc 2 自定义ASP.NET MVC路由值序列化为GET参数

Asp.net mvc 2 自定义ASP.NET MVC路由值序列化为GET参数,asp.net-mvc-2,routing,routevalues,Asp.net Mvc 2,Routing,Routevalues,你好 我将DateTime值作为route参数传递,它变成了如下形式的GET参数: http://example.com/?DateFrom=01%2F01%2F2011%2000%3A00%3A00&DateTo=01%2F31%2F2011%2000%3A00%3A00 为了可读性:这是一个URL,编码自: http://example.com/?DateFrom=01/01/2011 00:00:00&DateTo=01/31/2011 00:00:00

你好

我将
DateTime
值作为route参数传递,它变成了如下形式的GET参数:

http://example.com/?DateFrom=01%2F01%2F2011%2000%3A00%3A00&DateTo=01%2F31%2F2011%2000%3A00%3A00
为了可读性:这是一个URL,编码自:

http://example.com/?DateFrom=01/01/2011 00:00:00&DateTo=01/31/2011 00:00:00
是否有任何方法可以自定义此序列化而不使用自定义路由


提前谢谢

您可以传递格式化字符串,而不是传递日期时间:

<%= Html.ActionLink(
    "link text", 
    "someaction", 
    new { 
        DateFrom = Model.DateFrom.ToString("yyyy-MM-dd"),
        DateTo = Model.DateTo.ToString("yyyy-MM-dd"),
    }
) %>


问题在于,我传递给路由值的不是单个
DateTime
值,而是对象
urlparms
,它包含大约10个参数(过滤值)。我有一个接受这个对象作为参数的动作。它可以在没有任何手动干预的情况下工作,但是URL中的
DateTime
值很难看…@artvolk,在这种情况下,不是传递
UrlParams
对象,而是传递将日期正确格式化的
UrlParamsViewModel
对象。可以帮助在对象之间进行转换。My
UrlParams
的存在只是为了在URL中传递参数,因此它已经是一种ViewModel:)。似乎我应该实现一些逻辑来手动格式化\unformat值?@artvolk,在这个UrlParams对象中,您可以用字符串替换DateTime属性,这样您就可以获得正确的格式。另一种选择是保留原始日期时间作为私有备份字段,并公开相应的公共字符串属性,这些属性将被正确格式化。但是替换\自定义查询字符串序列化怎么样?这可能吗?