4

Asp.net mvc アプリケーションを開発しています。ASP.net 開発サーバーではすべて正常に動作しますが、IIS 7 でホストしようとすると、URL 解決に関連する問題が発生します。画像を提供するためにJavascriptで相対パスを使用しました。スクリプト ファイルは ~/Scripts/ フォルダーにあり、画像ファイルは ~/Content/images/ フォルダーにあります。今、javascript ファイルで、http://localhost/WebApp1/controller1/action1/ のような相対パスを指定して、give を使用しようとしています。http:// localhost /controller1/action1/ でそれを見つけようとしますが、ファイルを見つけます。

4

4 に答える 4

4

私の読み方が正しければ、開発環境の WebApp1 ではなく、IIS7 のドメイン ルートから WebApp を実行していますか?

したがって、私の仮定が正しければ、~/はhttp://localhost/WebApp1/ではなくhttp://localhost/に解決されるはずです。

それがすべて正しい場合は、フォルダー構造がすべて 1 レベル上に移動し、 ~/scripts フォルダーが絶対パスになります。

http://localhost/スクリプト/

画像フォルダーは次のとおりです。

http://localhost/Content/Images/

スクリプトから画像にアクセスするには、いくつかの方法を使用できます。最も簡単な方法は、スクリプト ディレクトリからの相対パスを使用することです: "../Content/Images/MyImage.jpg"

または、document.location.host を使用して、javascript 内で完全修飾パス名を作成することもできます: document.location.host + "/Content/Images/MyImage.jpg"

もう 1 つの方法は、ASP.NET でスクリプトのこの部分を動的に作成して、完全修飾パス名が挿入されるようにすることです。これを行うには、ScriptManager.RegisterStartupScriptまたはScriptManager.RegisterScriptBlockを使用します。

この猫の皮を剥ぐには本当にたくさんの方法がありますが、頭の中で思いつく最初の 3 つにすぎません。

于 2008-12-05T00:22:00.693 に答える
1

私は同じ問題を抱えていて、David Banister による要素の解決策を見つけました。この問題は、(www.mysite.com/viewName/index ではなく、www.mysite.com/viewName) の形式で URL を返す MVC コントローラーの index アクションにあり、後で Web ブラウザーが css を参照しようとすると失敗します。または相対パス構文 (../../) を使用する js ファイル。

彼の解決策は私にとってうまくいきます。これが誰かに役立つことを願っています。幸運を。

http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/

于 2011-02-16T16:54:54.613 に答える
1

試す:

<a href="~/controller1/action1/" id="testLnk" runat="サーバー">

runat 属性は、フレームワークがそれを解決することを保証する必要があります。ResolveUrl メソッドを使用することもできます。

于 2008-12-04T22:54:21.587 に答える
0

過去にこの問題が発生しました。チルダを使用してみてください

〜/コントローラー1/アクション1/

于 2012-01-04T18:25:22.720 に答える