我希望制作一个 Web 控件,可以在其中与我的 aspx 内联注册客户端启动脚本,因为我讨厌在代码隐藏中注册!
到目前为止我所拥有的示例:
<Ben:StartupScript runat="server">
var form = document.getElementById("<% =form1.ClientID %>");
</Ben:StartupScript>
目前,我正在覆盖 OnPreRender
控件的方法,将控件的内容呈现为字符串,然后使用 ClientScript.RegisterStartupScript
手动将该字符串注册为启动脚本关于Page
。我还覆盖了 Render
方法以便不渲染控件。我还应该注意,我有 ParseChildren
属性设置为 false
和 PersistChildren
属性设置为 true
.
一切似乎都运行良好,但我的控件允许其中包含其他 Web 控件(例如 Button)。除了不直观之外,这还可能导致运行时错误。我希望能够清除控件,但这是不可能的,因为 <% ... %>
代码块。
那么,是否可以阻止开发人员嵌入子控件,同时仍然允许代码块?
此外,这个想法好还是有根本缺陷?哈哈。
非常感谢,
本
最佳答案
这听起来是个好主意,但如果你花太多时间与继承/默认行为作斗争,那么它可能会带来更多麻烦,而不是值得
如果这是一次性问题,一种廉价的解决方案是直接将脚本嵌入到母版页的标题中;-)
另一方面,允许开发人员将自己的脚本嵌入为 Web 控件的子级可能会很有用
关于asp.net - 注册启动脚本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326460/