2012-01-04 12 views
1

私はC#.Net MVC3ウェブアプリを持っています。特定のjsファイルでは、私は、ダイアログボックスをロードし、ロードを割り当てています:プロパティを以下の画像MVC3 javascript image issue

loading: $('<img src="../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'), 

しかし、異なる環境では、画像を見つけることができません。これらの例のコードは、私が

loading: $('<img src="@Href("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'), 

loading: $('<img src="@Url.Content("~/Content/Images/loading.gif")" alt="loading" class="ui-loading-icon">'), 

を試していないどちらも私はUrl.Content @使用してきたとき....働いていたとし@試みた

loading: $('<img src="../../../Content/Images/loading.gif" alt="loading" class="ui-loading-icon">'), 

する必要がありますaspxファイルのHref、それは動作します。

言うまでもなく、私はjavaScriptのエキスパートではありませんが、jsファイルではこれが可能でなければならないと考えられます。

アイデア?

+0

@のurl.Contentが動作するはずです。火かき棒でデバッグしましたか? –

+0

さらにコードを表示できますか?あなたがしようとしていることは明らかではありません。 – jrummell

+2

.NETコードは.NETで処理されないため、JSファイルで使用することはできません。 –

答えて

4

方法は、あなたのマスターまたはレイアウトページにヘルパー関数を作成することですjqueryへの参照の下のレイアウトページで、それを使用する他のファイルの上:

// This adds the helper onto the jQuery object rather than just being global 
$.getUrl = function (path) { 
    return '@Url.Content("~")' + path; 
}; 

その後、あなたのjsファイルでこのようにそれを使用します。

$('<img src="' + $.getUrl('/Content/Images/loading.gif') + '" />') 
+0

@リチャードD ...私もそれを試してみましょう...ありがとう – MikeTWebb

+0

@All ...私はそれが自分のコードスタイルに合うように私はこれを選んだ – MikeTWebb

2

リチャードDは、javascriptファイルで.NETコードを実行できないと述べています。回避策としては、画像パスをビューの非表示フィールドに保存してからjavascriptファイルから取得する方法があります。

ビューファイル:

<input type="hidden" id="image-path" value="@Url.Content("~/Content/Images/loading.gif")" /> 

JSファイル:

置き、これを:私は通常これを回避

var imagePath = $("#image-path").val(); 
loading: $('<img src="' + imagePath + '" alt="loading" class="ui-loading-icon">'), 
+0

とRichardD ...ありがとう。それは私が思ったようなものです。私は上記のアイデアを試し、それがどのように進むのかを教えてあげます。ありがとう! – MikeTWebb