C# 如何以编程方式向contentPlaceHolder添加内容?
我有一个母版页,我的所有页面都继承了它。 对于格式,我想将不同页面的内容放在ContentPlaceHolder中 现在,我怎样才能把所有的东西都插进去呢?因为我计划用数据库中的东西填充ContentPlaceHolder,所以我想我必须以编程的方式来完成C# 如何以编程方式向contentPlaceHolder添加内容?,c#,asp.net,master-pages,contentplaceholder,C#,Asp.net,Master Pages,Contentplaceholder,我有一个母版页,我的所有页面都继承了它。 对于格式,我想将不同页面的内容放在ContentPlaceHolder中 现在,我怎样才能把所有的东西都插进去呢?因为我计划用数据库中的东西填充ContentPlaceHolder,所以我想我必须以编程的方式来完成 如何向ContentPlaceHolder添加控件? 我检查了other,但无法通过其ID访问它 我应该从一开始就使用多个内容占位符吗?假设我想放电影。是否应该只有一个包含所有图片、描述和评级,或者每个内容都有一个占位符 我对其他解决方案持开
我对其他解决方案持开放态度,因为我没有ASP方面的经验。通常发生的情况是
ContentPlaceHolder
s设置母版页内容
区域占位符(它是一个asp.net控件)。我喜欢这样做
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<asp:Literal ID="jsstuff" runat="server"></asp:Literal>
</asp:Content>
这就进入了代码背后:
string stuff = @"<script type=""text/javascript"">
var searchBox = 0;
var currentCountry = '';
</script>";
jsstuff.Text = stuff;
string stuff=@”
var-searchBox=0;
var currentCountry='';
";
jsstuff.Text=stuff;
老问题。。。但我刚刚遇到了这个问题,这是谷歌上不断出现的#1帖子,所以我想我会添加我的答案,因为其他人在我的案例中不起作用
如果内容页和母版页的名称空间不相同,那么内容页控件在内容页的Codebehind中不可访问,那么我就是这样做的
此外,请检查设计器文件。如果该控件未列在designer文件中,请删除该文件并重新创建(project->convert to web application)很抱歉,这并不能真正解决我的问题。我需要一些代码以编程方式将文本放入内容区域,因为我无法从网页后面的代码访问它。我有default.aspx页面和ID=content1的ContentPlaceHolder。在default.aspx.cs中,我无法“看到”内容1.我看到了。是否有任何原因导致您无法在页面的内容
区域中放置占位符?您当然可以添加一些内容:例如:Label lbl=new Label();lbl.Text=“某物”;占位符.控件.添加(lbl)代码>否,我可以使用占位符。我想那没关系。但现在我意识到我的问题远比这复杂。我应该问另一个问题吗?我想根据我的QueryLink在该区域集成不同的内容。类似于在PHP中使用导入。例如,如果我有?category=1,那么该区域将是类别描述和产品,或者,如果我有?product=xx,那么该区域将显示图像、描述和价格。最简单的方法是什么?我会尝试将要在其中显示的内容类型分离为单独的用户控件,然后根据需要动态加载适当的控件(例如,页面的page\u Init
method,var control=page.LoadControl(“~/path/to/theneedUserControl.ascx”);
然后设置控件并将其添加到占位符的控件
集合),但这可能会有点麻烦,具体取决于项目的设置方式。可能更容易的是,只需要有单独的页面,每个页面都做它需要做的事情,然后将它们写入IIS7中相同的基本Url(如果使用)。你有很多选择。这非常有效。它甚至可以扩展为包含占位符名称的控制参数。当我需要以编程方式将javascript文件放置在特定的序列/位置,而不是头部时,我使用了这个解决方案。
<asp:ContentPlaceHolder ID="ScriptsPlace" runat="server"></asp:ContentPlaceHolder>
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);
}
}
<div id="_jsDiv" runat="server">
$(document).ready(function() {
//js stuff
});
Other server controls or HTML junk
</div>
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);
}
}