Url.RouteUrl正在添加错误的字符

时间:2012-07-06 03:34:54

标签: c# asp.net-mvc-3

这是我的mvc3应用程序的路由配置

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    // Parameter defaults:
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
 );

正如您所看到的,这是mvc3应用程序的默认路由,您可以注意到我根本没有更改它。所以当我尝试使用像这样的网址助手RouteUrl

@Url.RouteUrl("Default", 
              new { Action = "RegistrarPago", 
                    IDPago = ViewBag.IDPago,
                    confirmNumber = ViewBag.ConfirmationNumber }, 
              Request.Url.Scheme)

输出就是这个

http://localhost/DescuentoDemo/pago/RegistrarPago?IDPago=60&confirmNumber=1798330254

这个网址基本上对于这个字符是错误的amp;帮助器有什么问题我假设这是一个编码问题,但为什么呢?

1 个答案:

答案 0 :(得分:9)

@ Razor函数默认使用HTML编码。 Url.RouteUrl助手没有任何问题。这是你正在使用它的上下文。

就好像你在Razor视图中写下了以下内容:

@("http://localhost/DescuentoDemo/pago/RegistrarPago?IDPago=60&confirmNumber=1798330254")

您正在HTML页面上输出结果,因此正确的做法是对其进行HTML编码。如果您不想使用HTML编码,请使用Html.Raw函数:

@Html.Raw(Url.RouteUrl("Default", 
                       new { Action = "RegistrarPago", 
                             IDPago = ViewBag.IDPago, 
                             confirmNumber = ViewBag.ConfirmationNumber },
                       Request.Url.Scheme))

如果你想生成一个指向这个url的锚点,你可以在这种情况下直接使用Html.RouteLink帮助器。