这是我的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;
帮助器有什么问题我假设这是一个编码问题,但为什么呢?
答案 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
帮助器。