如何使ASP.NET路由转义路由值?

Set*_*son 5 asp.net-mvc url-routing asp.net-mvc-routing

我有一个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 }
);
Run Code Online (Sandbox Code Playgroud)

此路线正确地将" / Foo/100/Edit/01%2F21%2F2010 " 映射到所需的操作.更新:这是不正确的.这没有正确路由,我错了.请参阅已接受答案中链接的相关问题.

我的问题是,当我使用Html.ActionLink()生成此路由的链接时,它不会对日期进行URL编码,最终会出现无效的URL,例如" / Foo/100/Edit/01/21/2010 ".

有没有办法让路由基础设施为我编码值?我必须手动对我传递给HTML帮助程序的数据进行URL编码似乎是错误的.

Mat*_*s F 0

不能在 ASP.NET MVC 中的路由值中使用正斜杠。即使它是 URL 编码的,它也不起作用。

url 中的斜杠

只有使用 ASP.NET 4.0 才有解决方案