Cip*_*agă 7 c# asp.net master-pages contentplaceholder
我有一个母版页,我的所有页面都继承了它.对于格式化,我想在ContentPlaceHolder中放置不同页面的内容.
现在,我怎么能插入一切呢?由于我打算用数据库中的东西填充ContentPlaceHolder,我想我必须以编程方式进行填充.
如何向ContentPlace Holder添加控件?我检查了其他答案,但我无法通过其ID访问它.
我应该从一开始就使用多个ContentPlaceHolders吗?假设我想放电影.如果只有一个包含所有图像,描述和评级,每个东西都要有一个ContentPlaceHolder吗?
我对其他解决方案持开放态度,因为我没有使用ASP的经验.
Mik*_*Dev 12
老问题......但是我刚刚遇到了这个问题,这是第一篇关于谷歌的帖子,所以我想补充一下,因为其他人在我的案例中没有用.
这是我在常规<asp:Content
不起作用时的方法(虽然在正常使用中,答案@JayC是你如何做的):
MasterPage有这个ContentPlaceHolder
:
<asp:ContentPlaceHolder ID="ScriptsPlace" runat="server"></asp:ContentPlaceHolder>
Run Code Online (Sandbox Code Playgroud)
必须从用户控件动态添加一些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);
}
}
Run Code Online (Sandbox Code Playgroud)
更新:事实证明我必须在比预期更多的地方使用它,并最终使用更灵活/可读的方式.在用户控件本身,我只是包装了javascript以及需要用常规移动的任何其他内容div
.
<div id="_jsDiv" runat="server">
$(document).ready(function() {
//js stuff
});
Other server controls or HTML junk
</div>
Run Code Online (Sandbox Code Playgroud)
然后后面的代码将找到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);
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上把这个代码放在一个自定义用户控件中,我只是让我的常规用户控件继承自定义用户控件,所以一旦我用a包装javascript/etc <div id="_jsDiv" runat="server">
,自定义用户控件就会处理剩下的事情,我不知道必须在用户控件后面的代码中执行任何操作.
通常发生的情况是
ContentPlaceHolder
您使用正确的 html 和s设置母版页Content
为您添加区域。如果您想动态地将控件添加到母版(或任何)页面,您可以将控件添加到任何现有控件。如果它不应该以任何方式包装,只需添加一个Placeholder
(它是一个asp.net控件)。
归档时间: |
|
查看次数: |
24841 次 |
最近记录: |