是否可以从后面的代码中将控件注入页面主体?

时间:2014-01-15 13:46:59

标签: c# asp.net dotnetnuke

我有一个dnn模块,我需要在页面的body标签中注入一些HTML元素。

我试过了:

HtmlGenericControl divControl = new HtmlGenericControl("DIV");
divControl.ID = "divControl";
this.Page.Controls.AddAt(0, divControl);

上面的代码导致HTML看起来像这样:

<div id="xxxxxx_divControl"></div><!DOCTYPE html>
<html  lang="en-US">
<head id="Head">...

页面上没有body属性,那么有没有办法在body标签中进行div渲染? (如下图所示)

<!DOCTYPE html>
<html  lang="en-US">
<head id="Head">...
</head>
<body>
<div id="xxxxxx_divControl"></div>
....
</body>
</html>

2 个答案:

答案 0 :(得分:3)

您不希望将其添加到Page控件,而是添加到页面中容器的控件。为此使用PlaceHolder。只需将PlaceHolder控件添加到您要注入内容的页面:

<asp:PlaceHolder runat="server" ID="somePlaceHolder" />

然后你会在代码隐藏中引用它:

HtmlGenericControl divControl = new HtmlGenericControl("DIV");
divControl.ID = "divControl";
this.somePlaceHolder.Controls.AddAt(0, divControl);

答案 1 :(得分:1)

您可以将runat="server"和ID添加到正文标记中。然后将控件添加到body的控件集合中。但是,根据您的页面生命周期,它可能不会达到您想要的位置,因此占位符仍然是首选方式。