2

jQueryコードでは、を使用してResolveUrl("~/DynamicMenu.ashx")います。

ただし、正確な文字列を返すだけです。

"ResolveUrl("~/DynamicMenu.ashx")"

ここに少しのコードがあります:

pageIndex = pageIndex + 1;
var CountryCode = getCookie("SetCountry");
var urlToHandler = '<%= ResolveUrl("~/DynamicMenu.ashx") %>'; 
urlToHandler = urlToHandler + CountryCode + "&PageIndex=" + pageIndex;
alert(urlToHandler);

ResolveUrl()のコードの何が問題になっていますか?

4

2 に答える 2

2

問題は、ponchaが指摘したように、ASP.NET に関する限り、.js ファイルで配信されるコンテンツが文字列であることです。IIS が提供する前に、いかなる種類のレンダリングも適用しません。またはのように、他のコンテンツファイルと同じように扱われます。.jpg.png

サーバー側メソッド ( など) を呼び出すには、ASP.NET によって解析される任意のページ内で構文ResolveUrlを使用する必要があります (またはファイルなど)。<% ... %>.aspx.master


ところで、これらの小さなコード ブロックはさまざまな名前で呼ばれています。


特に、構文のDisplaying Expression<%= ... %>が必要です。ここで、

等号の後に入力された値が現在のページに書き込まれます

ResolveClientUrl()それを知っていれば、 whichを使用して独自の URL を作成できます。

クライアントが Web サーバー上のリソースにアクセスするために使用するのに適した URL 文字列を返します

これに、Web アプリケーションのルート オペレーターまたは~文字を渡します。ここで、ASP.NET は次のようになります。

~ 演算子を現在のアプリケーションのルートに解決します。

これらを組み合わせることで、次のコードをマスター ページに配置することで、表示式の結果を JavaScript 変数に保存できます ( Joel Varty のブログから引用)。

<script type="text/javascript">
    var baseUrl = '<%= Page.ResolveClientUrl("~/") %>';
</script>

JavaScript 変数は本質的にグローバルであるため、他のスクリプトからbaseUrl変数にアクセスできるようになったため、次のスクリプトで .js ファイルから変数を利用できます。

function ResolveUrl(url) {
    return url.replace("~/", baseUrl);
}

これで、JavaScript ファイルから直接呼び出すResolveUrl("~/DynamicMenu.ashx")ことができ、"~/" を取り除き、サーバー側スクリプトによって以前に作成された baseUrl に置き換えることで、適切な URL が作成されます。


参考文献:

于 2014-01-08T20:16:16.030 に答える
1

この解決策を試してください - ResolveUrl in Javascript

于 2012-06-29T14:26:36.860 に答える