我正在寻找一个Web控件,我可以在我的aspx中注册客户端启动脚本,因为我讨厌在代码隐藏中注册!
到目前为止我所拥有的一个例子:
< Ben:StartupScript runat =“server”>
var form = document.getElementById(“<%= form1.ClientID%>”);
< /本:StartupScript>
目前,我正在重写控件的OnPreRender方法,将控件的内容呈现为字符串,然后使用页面上的ClientScript.RegisterStartupScript手动将该字符串注册为启动脚本。我还重写了Render方法,以便不呈现控件。我还应该注意,我将ParseChildren属性设置为false,并将PersistChildren属性设置为true。
所有似乎都运行良好,但我的控件允许其中的其他Web控件(如Button)。除了不直观之外,这可能导致运行时错误。我希望能够清除控件,但这是不可能的,因为<%...%>代码块。
那么,是否可以阻止开发人员嵌入子控件同时仍然允许代码块?
此外,这个想法有什么好处还是从根本上有缺陷?洛尔。
非常感谢,
本
答案 0 :(得分:1)
这听起来是个好主意,但如果你花太多时间来对抗继承/默认行为,那么它可能比它的价值更麻烦
如果这是一次性问题,那么便宜的黑客解决方案就是直接将脚本嵌入母版页的标题中; - )
另一方面,允许开发人员将自己的脚本作为Web控件的子项嵌入可能很有用
答案 1 :(得分:0)
如果您使用母版页,请在您的部分添加另一个控件。这样,您就可以轻松地将css / js添加到子页面中的标题中。
ClientScript.RegisterScript主要用于用户/服务器控件,