c# – 如何以编程方式将内容添加到contentPlaceHolder?
我有一个母版页,我的所有页面都继承了它.
对于格式化,我想在ContentPlaceHolder中放置不同页面的内容. 现在,我怎么能插入一切呢?由于我打算用数据库中的东西填充ContentPlaceHolder,我想我必须以编程方式进行填充. >如何向ContentPlace Holder添加控件? 我对其他解决方案持开放态度,因为我没有使用ASP的经验. 解决方法
老问题……但是我刚刚遇到了这个问题,这是第一篇关于谷歌的帖子,所以我想补充一下,因为其他人在我的案例中没有用.
这是我在常规< asp:内容不起作用时的做法(虽然在正常使用中,答案@JayC是你如何做的): MasterPage有这个ContentPlaceHolder: <asp:ContentPlaceHolder ID="ScriptsPlace" runat="server"></asp:ContentPlaceHolder> 必须从用户控件动态添加一些JavaScript.尝试直接使用ContentPlaceHolder会出现此错误:
所以我想从代码隐藏中添加脚本.这是.ascx文件的页面加载: protected void Page_Load(object sender,EventArgs e) { ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder; if (c != null) { LiteralControl l = new LiteralControl(); l.Text="<script type="text/javascript">$(document).ready(function () {js stuff;});</script>"; c.Controls.Add(l); } } 更新:事实证明我必须在比预期更多的地方使用它,并最终使用更灵活/可读的方式.在用户控件本身,我只是包装了javascript以及需要使用常规div移动的任何其他内容. <div id="_jsDiv" runat="server"> $(document).ready(function() { //js stuff }); Other server controls or HTML junk </div> 然后后面的代码将找到div,然后将其移动到ContentPlaceHolder中. protected void Page_Load(object sender,EventArgs e) { ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder; HtmlGenericCOntrol jsDiv = this.FindControl("_jsDiv") as HtmlGenericControl; if (c != null && jsDiv != null) { c.Controls.Add(jsDiv); } } 我实际上把这个代码放在一个自定义用户控件中,我只是让我的常规用户控件继承自定义用户控件,所以一旦我用一个< div id =“_ jsDiv”runat =“server”>包装javascript / etc ;,自定义用户控件负责其余部分,我不必在用户控件的代码后面做任何事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |