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、この場合ヘルパーを直接使用します。

于 2012-07-06T05:12:49.643 に答える