2012-07-06 5 views
3

를이 내 mvc3 응용 프로그램 내 라우팅 구성되고 추가되어이이 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 } 
); 

조금도. 나는이

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

출력처럼 URL 도우미 RouteUrl을 사용하려고 할 때 그래서 난 도우미 뭐가 잘못이 문자 amp;을 위해 기본적으로 잘못이

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

이 URL은 그게 인코딩 문제라고 가정하지만 왜?

답변

9

@ 면도기 기능은 기본적으로 HTML 인코딩을 수행합니다. Url.RouteUrl 도우미에 문제가 없습니다. . 그것은 당신이 (가) 면도기보기에서 다음과 같은 쓴 것처럼 '

그것은 당신이 그것을 사용하는 문맥의 :

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

당신은 HTML 페이지에 결과를 출력하는, 그래서 올바른 일에 할 일은 HTML로 인코딩하는 것입니다.

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

을 그리고 당신은 예를 들어 당신이 직접이 경우 Html.RouteLink 도우미를 사용하여이 URL을 가리키는 앵커를 생성하려면 : 당신은 인코딩을 HTML로하지 않으려면 다음 Html.Raw 기능을 사용합니다.