我有一个ScriptControl,它使用图像作为嵌入式资源,GetWebResourceUrl生成WebResource.axd URL。我目前正在使用GetScriptDescriptors()将URL发送到JavaScript对象。
ScriptControl可以在Repeater中,所以您可能有20+实例。它们都使用相同的图像(不能通过属性进行自定义),所以我想在变量中设置URL一次并共享它。我知道我可以用一个全局变量注册一个脚本块,但是如果可能的话,我想避免这样做。是否有方法在控件类型的范围内设置变量(全局-> 控件类型 ->控件实例)?
发布于 2010-10-20 19:06:31
这似乎很有效:
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") %>。这可以是您实际使用它的地方,也可以是添加对象原型的地方。
https://stackoverflow.com/questions/3981261
复制相似问题