複数のScriptControlインスタンス共有変数
-
09-10-2019 - |
質問
私は持っています ScriptControl
これは、埋め込みリソースとして画像を使用します GetWebResourceUrl
生成する WebResource.axd
URL。私は現在使用しています GetScriptDescriptors()
JavaScriptオブジェクトにURLを送信します。
ScriptControl
にすることができます Repeater
, 、したがって、20以上のインスタンスがある場合があります。それらはすべて同じ画像(プロパティを通じてカスタマイズできない)を使用しているため、変数でURLを1回設定して共有したいと思います。グローバル変数でスクリプトブロックを登録できることは知っていますが、可能であればそれを避けたいと思います。制御タイプの範囲内で変数を設定する方法はありますか(グローバル - > コントロールタイプ - >コントロールインスタンス)?
解決
これはうまく機能しているようです:
string imagesScript = String.Format(
"MyNamespace.MyClass.prototype.imgDisabled = '{0}';" +
"MyNamespace.MyClass.prototype.imgEnabled = '{1}';",
Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.disabled.png"),
Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.enabled.png")
);
Page.ClientScript.RegisterStartupScript(typeof(MyClass), "Images", imagesScript, true);
それから私のオブジェクトで私はただします this.imgDisabled
また this.imgEnabled
URLを取得します。
編集: 別のオプションがあります AssemblyInfo.cs
JavaScriptの参照を設定します WebResource(..., PerformSubstitution = true)
その後、.jsファイルには持つことができます <%= WebResource("MyNamespace.enabled.png") %>
あなたが望むどこでも。これは、実際にそれを使用するか、オブジェクトのプロトタイプに追加する場所です。
所属していません StackOverflow