2009-03-30 8 views
3

別のスクリプトファイルにあるjavascriptにASp.NETタグを入れることは可能ですか?たとえば、私は次のようなものがありますJavaScriptをASPに含むASP.NET MVC

$.getJSON("/Postcode/GetAddressResults/" + $get("SearchPostcode").value, null, function(data) { 

私は変えたいが、それはASPタグが好きではない!

var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("SearchPostcode").value 
     $.getJSON(action, null, function(data) { 

しかし、これはうまくいかないようですが、何が間違っていますか?

+0

エラーは何ですか。 aspが最初に処理されるので、aspタグをjsに埋め込むことは可能です。 – Brian

+0

これが可能かどうかの決定的な答えは?私は以下の回避策を見ていますが、あなたがスクリプトブロック内にasp.netタグを埋め込むことができるかどうかを知りたいと思います。 – Pete

+0

Nevermind - これは、別のjsファイルを参照しているとは読めませんでした。ダイナミックタグはスクリプトブロック内で動作しますが、Visual Studioではコードの強調表示やインテリセンスが解除されます。 – Pete

答えて

1

は、あなたのマスターページ(複数可)にホスト(〜が表すビット)から、現在のアプリケーション・パスの値を保持するためのメタタグを追加します。

あなたのJavascriptで、メタタグの内容を使用して〜接頭辞のパスを解決する関数を作成します。要求されたよう

編集

例: -

場所headセクションでこのコードマスター・ページ: - :

- あなたのJavaScriptで

<meta id="meta.AppDomainAppVirtualPath" 
    name="AppDomainAppVirtualPath" value="<%=HttpRuntime.AppDomainAppVirtualPath%>" /> 

は、この機能が含まれます

function resolveUrl(url) 
{ 
    if (url.charAt(0) == "~") 
    { 
     if (!resolveUrl.appPath) 
     { 
      var meta = document.getElementById('meta.AppDomainAppVirtualPath'); 
      resolveUrl.appPath = meta ? meta .getAttribute("content") : '/'; 
     } 

     if (resolveUrl.appPath == '/') 
      return url.slice(1, url.length; 
     else 
      return resolveUrl.appPath + url.slice(1, url.length); 
    } 
    else 
    { 
     return url; 
    } 
} 

あなたの李コード番号:

$.getJSON(resolveUrl("~/Postcode/GetAddressResults/") + $get("SearchPostcode").value, null, function(data) { 
+0

私にこの例を教えてもらえますか? – andyJ

0

JavaScriptが別のスクリプトファイルにある場合、ASP.NETによって処理されないため、これらのタグは処理されません。これを動作させるには、ASP.NETページでインライン展開が必要です。

0

いいえ、できません。 ビュー内のパスをjavascriptに公開できますが、外部のjavascriptファイルに直接表示することはできません。

@David M すべてをインライン展開する必要はありません。動的部分をインライン化し、他の部分をハードコードにすることができます。

よろしく、ピーター

+0

@Peter、Davidsの回答にコメントしたい場合は、コメントの追加機能を使います。あなたの答えの内容を質問の答えに制限する。 – AnthonyWJones