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 助手时

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

输出是这个

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

这个 url 对于这个字符基本上amp;是错误的 我假设这是一个编码问题,但为什么?

4

1 回答 1

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在这种情况下你可以直接使用 helper。

于 2012-07-06T05:12:49.643 回答