2010-10-20 144 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