2010-10-20 145 views
0

我有一個ScriptControl,它使用圖像作爲嵌入資源,GetWebResourceUrl生成WebResource.axd URL。我目前使用GetScriptDescriptors()將URL發送到JavaScript對象。共享變量的多個ScriptControl實例

ScriptControl可以位於Repeater,因此您可能有20多個實例。他們都使用相同的圖像(不能通過屬性定製),所以我想在一個變量中設置一次URL並共享它。我知道我可以用一個全局變量註冊一個腳本塊,但是如果可能的話,我想避免這種情況。有沒有辦法在控件類型範圍內設置一個變量(全局 - >控件類型 - >控件實例)?

回答

0

這似乎很好地工作:

 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.imgDisabledthis.imgEnabled得到的URL。

編輯:另一種選擇是在AssemblyInfo.cs您設置的JavaScript參考WebResource(..., PerformSubstitution = true)那麼你的.js文件可以在任何地方<%= WebResource("MyNamespace.enabled.png") %>希望。這可以是您實際使用它或添加到對象原型的位置。

+0

第一種方式允許最大的靈活性(例如允許自定義圖像URL與屬性),所以我使用它。 – 2010-10-21 16:46:46