我有一个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>
答案 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的控件集合中。但是,根据您的页面生命周期,它可能不会达到您想要的位置,因此占位符仍然是首选方式。