5

私のウェブサイトのサブディレクトリ (つまり、www.example.com/go/) で実行されている asp.net アプリケーションがあり、.js スクリプト ファイル内で、プロジェクトの Images ディレクトリにある画像を参照しようとしています。

画像を参照するために使用/Images/add.pngすると、デバッグ モードでは画像が表示されますが、アプリケーションが公開されているときは表示されません (デバッグ モードでは、アプリケーションは logalhost:port# で実行され、/go/ url パスでは実行されません)。 . go/Images/add.pngまた、イメージを参照するために使用すると、公開された Web アプリケーションでイメージを見ることができますが、デバッグ モードでテストしている間は見えません。実稼働モードとデバッグ モードの両方で表示できるように、スクリプトから画像リソースを参照する適切な方法は何ですか?

編集

何らかの理由で相対パスが機能していません。./Images/add.pngとを実験しました../Images/add.png

4

3 に答える 3

9

画像を指すグローバル javascript 変数を作成できます。

<script type="text/javascript">
    var imageUrl = '@Url.Content("~/images/add.png")';
</script>

次に、javascript ファイル内で、このグローバル変数を使用して、その値をハードコーディングする代わりにイメージの場所を参照できます。既にわかっているように、アプリケーションを仮想ディレクトリに公開すると機能しません。

言うまでもなく、このスクリプトは、実際にこの JavaScript 変数を使用するスクリプトの前にビューに含める必要があります。

于 2013-02-25T15:58:20.590 に答える
3

スクリプトが MVC ビューから分離されていない場合は、スクリプトで使用var image = @Url.Content("~/Images/add.png")してください。

それ以外の場合は、スクリプト ファイルの場所と画像の相対的な場所がわかっているので、相対パスを使用します。

../Images/add.png

または、MVC を使用してコンテンツの相対パスを取得し、スクリプトを使用して読み取る要素に追加します。

<div id="myDiv" data-image="@Url.Content("~/Images/add.png")"></div>

var imageUrl = document.getElementById('myDiv').attributes["data-image"].value;

例 - http://jsfiddle.net/hbBKs/1/

于 2013-02-25T16:00:12.037 に答える
1

スクリプトに基づいて相対パスから画像を参照する必要があるため、

../images/file.jpg

または、Javascriptに.Netを含める必要があります

var image = '@Url.Content("~/uploads/file.jpg")';

「~」記号は、プロジェクトのルートから開始することを示しています (その中でもサブフォルダーです)

于 2013-02-25T15:59:49.030 に答える