2012-07-06 46 views
3

这是我MVC3应用我的路由配置Url.RouteUrl是增加错误的字符

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应用程序的默认路由,你可以看到,我不改在所有。所以,当我试图用URL助手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;有什么不对的帮手,我假设这是一个编码问题,但为什么?

回答

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)) 

如果你想生成例如指向这个网址可以直接使用Html.RouteLink助手在这种情况下锚。