2016-09-19 8 views
0

@ Url.ContentとASP.NET MVCの@Hrefヘルパメソッドが正しく動作しない場合があります。これはlocalhost上の状況で、IIS ExpressではなくIISでホストされるため、URLはたとえばhttp://localhost:12345/index-hrではなくhttp://localhost/MyApp/index-hrのように見えます。私も試してみましたURLが書き換えられたとき@Url.Contentと@Hrefが正しく動作しない

<script src='@Href("~/Scripts/toastr/toastr.js")' type="text/javascript">  </script> 

<script src='@Url.Content("~/Scripts/toastr/toastr.js")' type="text/javascript"></script>, 

と:http://localhost/MyApp/index-hr:それは状況を除き、偉大なURLを解決

 <script src='~/Scripts/toastr/toastr.js' type="text/javascript"></script> 

URLのようなものがあるこれは私が私のスクリプトを呼び出す方法です。私のURL /index-hrが書き換えられ、コントローラHomeとアクションHomeIndexにマップされます。 URLがhttp://localhost/MyApp/Homeの場合は問題ありませんので、余分なスラッシュ(アプリケーションがローカルIIS上でホストされている場合)が原因で問題にならないかもしれませんが、URLが書き換えられるため問題にはならないかもしれません。 rewitten URLを含む他のページはtoast.jsを読み込みますが、リンクは深いですが、この状況ではtoast.jsを次のURL:http://localhost/Scripts/toastr/toastr.jsに解決します。その結果、404コースになります。それはに解決する必要がありますhttp://localhost/MyApp/Scripts/toastr/toastr.js

+0

私は個人的に親フォルダとしてrootをとる "/Scripts/toastr/toastr.js"が好きです。すべての状況で正しく動作します –

+0

試しました。働いていない。 http:// localhost/MyApp/index-hrが動作していない場合でもURLがhttp:// localhost/MyApp/Homeの場合には動作せず、アクションとコントローラで完全に書き換えられていないURL http:// localhost/Multiweb/Home/HomeIndex –

+0

@UbiquitousDevelopersはこう言っています。うまくいくはずです。一つのキャッチは '"/Scripts/.... "です。これはあなたのフォルダ構造に依存します。 jsファイルをビューにドラッグ・アンド・ドロップし、生成されたパスを確認して、 'src'で同じパスを使用してください。または、@ Scripts.Render( "〜/ Scripts/toastr/toastr.js")を使用してみてください。ただし、 '@ Scripts.Render'はバンドルの目的のためだけです。 – Developer

答えて

0

私は解決策を見つけたか、ちょうどこの事を固定し、他のものを台無ししかし、提案hereとして、私はこのコードを書いた場合はわからないのGlobal.asaxです:

protected void Application_BeginRequest() 
    { 

     Context.Items["IIS_WasUrlRewritten"] = false; 
    } 

ここは言いますTilde(〜)表記は、ASP.NET Web Pages Razor V3のIIS URLリライトを使用して元のURLにマップされます。ケースのURLには、将来的には動作しませんここでの説明である:のURLにチルダ表記の振る舞いは、ASP.NET MVCとの整合性を保つためにWebページレイザーV3で が変更されるため

この問題が発生します。 ASP.NET MVCでは、Url.Contentメソッドのチルダ記号または Html.ActionLinkメソッドは、 IIS URL書き換えルールに関係なく、元のURLを生成します。

ただし、WebページRazor V2では、IIS URL書き換えモジュールが有効になっていると、URLのチルダ表記が 書き換えURLにマッピングされます。 の例では、content.asp.netの下の要求がasp.net/content/の URLに書き換えられると、 のhref属性は/ content/book /に解決されます。 Web Pages Razor V3では、同じhref 属性が/ book /に変換されます。これは ブラウザの元のURLです。

かみそりv2では、かみそりv3よりも優れていましたか?

関連する問題