我有一个ASP.NET MVC站点,我想要/ {controller} / {id} / {action} / {date}等路由,其中“date”是日期/时间的mm / dd / yyyy部分. (我正在处理时间尺寸的数据,因此我需要一个ID和一个时间点来完成大多数操作)
这个的路线很简单:
routes.MapRoute( "TimeDimensionedRoute","{controller}/{id}/{action}/{date}",new { controller = "Iteration",action = "Index",id = String.Empty,date = String.Empty } );
此路线正确地将“/ Foo / 100 / Edit / 01/21/2010”映射到所需的操作.更新:这是不正确的.这没有正确路由,我错了.请参阅已接受答案中链接的相关问题.
我的问题是,当我使用Html.ActionLink()生成此路由的链接时,它不会对日期进行URL编码,最终会出现无效的URL,例如“/ Foo / 100 / Edit / 01/21/2010 ”.
有没有办法让路由基础设施为我编码值?我必须手动对我传递给HTML帮助程序的数据进行URL编码似乎是错误的.
解决方法
您不能在ASP.NET MVC中的路由值中使用正斜杠.即使它是URL编码它也不会工作.
如果使用ASP.NET 4.0,则只有一个解决方案