如何在c#代码后面添加div到容器div

时间:2009-07-22 14:07:44

标签: c# .net code-behind

ASP.NET,C#

正如标题所示,我想知道是否有人知道如何以编程方式(文件后面的c#代码)将div添加到另一个容器div(在aspx页面中)。

提前致谢

5 个答案:

答案 0 :(得分:30)

//创建div的新实例并设置所有值,如ID 查看简短的代码示例。我在网络添加中创建了Divs

System.Web.UI.HtmlControls.HtmlGenericControl NewDiv = new 
    System.Web.UI.HtmlControls.HtmlGenericControl();
    NewDiv.ID = "divcreated";

protected void Page_Load(object sender, EventArgs e)
{
    System.Web.UI.HtmlControls.HtmlGenericControl createDiv =
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");      
    createDiv.ID = "createDiv";
    createDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Yellow");
    createDiv.Style.Add(HtmlTextWriterStyle.Color, "Red");
    createDiv.Style.Add(HtmlTextWriterStyle.Height, "100px");
    createDiv.Style.Add(HtmlTextWriterStyle.Width, "400px");
    createDiv.InnerHtml = " I'm a div, from code behind ";
    this.Controls.Add(createDiv);
}

答案 1 :(得分:19)

Panel myChildPanel = new Panel();
myContainerPanel.Controls.Add(myChildPanel);

答案 2 :(得分:6)

除了使用像ocdecio建议的Panel之外,还有其他几种可能性。

  • 您可以在div中使用asp:Literal控件并使用预生成的HTML填充
  • 将一个runat =“server”添加到div本身并将其作为HtmlGenericControl访问,并从代码隐藏中添加其他控件。
  • 使用<%= ...%>

这取决于您需要的控制水平。尽管如此,在大多数情况下,最不可见的小组最好:

<div>    
<asp:Panel Visible="false" id="MyPanel" runat="server">
</asp:Panel>
</div>

然后在需要时更改代码隐藏的可见性。

您可能想要使用其他方法之一的情况是,当您遇到一些基于ID分配样式的CSS文件时。在这种情况下,使用.NET控件并不是一个真正的选择。但实际上,你应该把你的设计师砸在头上,告诉他改用类名。

答案 3 :(得分:4)

使用asp:Panel,它映射到div。

答案 4 :(得分:1)

这可能是一个非常古老的问题,但我想添加我的解决方案来帮助:

首先,你已经在页面中的“div”(你想要添加另一个“div”的那个)给出runat =“server”属性,这样你就可以从后面的代码访问它了,它看起来像这样:

<div id="superDIV" class="someCssClass" runat="server"></div>

然后在您的Page_Load()方法中添加以下内容:

protected void Page_Load(object sender, EventArgs e)
{
   //We create our new div
   System.Web.UI.HtmlControls.HtmlGenericControl newDiv = 
     new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
   newDiv.ID = "newSuperDIV"; //<---Give and ID to the div, very important!
   newDiv.Style.Value = "background-color:white; height:61%;"; //<---Add some style as example
   newDiv.Attributes.Add("class", "amazingCssClass"); //<---Apply a css class if wanted
   superDiv.Controls.Add(newDiv); //<---Add the new div to our already existing div
}

直接在 Page_Load 函数中生成你的div,这样可以确保在任何回发之后存在div,避免在(!IsPostBack){} 等代码块中生成它,否则它将不存在于您的页面中。