2

いくつかのリソースを持つASPサーバーコントロールを構築しています。それらの1つは、ServerControl.csファイルから変数を渡す必要がある.jsファイルです。

たとえば、次のようなリソーススタイルファイルとjavascriptファイルでリソースイメージを取得する方法を知っています。

var resourceOpen  = "<%=WebResource("PatientList.Images.DirOpen.png")%>" ;
var resourceClose = "<%=WebResource("PatientList.Images.DirClose.png")%>";

background: url('<%=WebResource("PatientList.Images.letter-bg.png")%>');

サーバーコントロールの.csファイルのパブリック変数でも同じことをしたいと思います。

public string TestVariable = "It works"

リソース内のjavascriptファイルに渡す方法は?

var jsvariable = "<%=TestVariable%>"

動作しません。WebResource(...)のみが機能しているようです。変数を使おうとすると、次のようになります。

alert("<%=TestVariable%>");

「動作します」の代わりに「<%= TestVariable%>」という文字列のウィンドウが表示されます

4

1 に答える 1

1

質問を正しく理解していない可能性がありますが、外部 JavaScript ファイルを参照するサーバー コントロールがありますが、外部ファイルではコントロールのプロパティを使用したいと考えています。

それがあなたの求めているものである場合、カスタム ハンドラーまたはそのようなものを作成しない限り、それは不可能であると思います。ご覧のとおり、外部 JavaScript ファイルは、コントロールの実行とは別に、クライアントによって要求されます。JavaScript ファイルがサーバーによって提供される時点で、コントロールは長い間破棄されています。

何が起こるかは次のとおりです。

  1. ページのリクエストがサーバーに送信されます
  2. ページがロードされ、ユーザーコントロールと外部 JavaScript ファイルへのリンクが作成されます
  3. クライアントはサーバーから結果を取得します
  4. クライアントは外部の JavaScript ファイルへのリンクを確認し、サーバーにそれを要求します。
  5. JavaScriptファイルのリクエストがサーバーに届きます
  6. サーバーはクライアントに JavaScript ファイルを提供します。

ご覧のとおり、2 つの要求が入っています (ステップ 1 とステップ 5)。2 番目のリクエスト (javascript ファイルに対するリクエスト) では、使用可能なプロパティを持つコントロールがなくなりました (これはステップ 1 にありました)。

これを実現するために考えられる唯一の方法は、カスタム ハンドラーを使用して JavaScript を提供することです。このようにして、任意の変数をクエリ文字列値として渡し、カスタム ハンドラーにそれらを Java スクリプトに挿入させることができます。

これがあなたの質問に答えることを願っています。

于 2012-06-22T14:42:12.303 に答える