多个 ScriptControl 实例共享变量

发布于 2024-09-28 04:53:56 字数 408 浏览 4 评论 0原文

我有一个 ScriptControl,它使用图像作为嵌入资源,并使用 GetWebResourceUrl 生成 WebResource.axd URL。我目前正在使用 GetScriptDescriptors() 将 URL 发送到 JavaScript 对象。

ScriptControl 可以位于 Repeater 中,因此您可能有 20 多个实例。它们都使用相同的图像(不能通过属性自定义),所以我想在变量中设置一次 URL 并共享它。我知道我可以使用全局变量注册脚本块,但希望尽可能避免这种情况。有没有办法在控件类型的范围内设置变量(全局 -> 控件类型 -> 控件实例)?

I have a ScriptControl that uses an image as an embedded resource and GetWebResourceUrl to generate the WebResource.axd URL. I am currently using GetScriptDescriptors() to send the URL to the JavaScript object.

The ScriptControl can be in a Repeater, so you may have 20+ instances. They all use the same images (not customizable through property), so I would like to set the URL once in a variable and share it. I know I could register a script block with a global variable, but would like to avoid that if possible. Is there a way to set a variable within the scope of the control type (global -> control type -> control instance)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

骷髅 2024-10-05 04:53:56

这似乎运作良好:

        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") %>。这可以是您实际使用它或添加到对象原型的地方。

This seems to work well:

        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);

Then in my object I just do this.imgDisabled or this.imgEnabled to get the URLs.

Edit: Another option is in AssemblyInfo.cs you set the JavaScript reference to WebResource(..., PerformSubstitution = true) then your .js file can have <%= WebResource("MyNamespace.enabled.png") %> anywhere you wish. This can be where you actually use it or adding to the object prototype.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文