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

ASP.NET,C#

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

提前致谢

//创建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); } 
 Panel myChildPanel = new Panel(); myContainerPanel.Controls.Add(myChildPanel); 

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

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

这取决于您需要的控制水平。 尽管如此,在大多数情况下,一个开始隐形的小组最好:

 

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

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

使用asp:Panel,映射到div。

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

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

 

然后在您的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,这样它可以确保在任何回发之后存在,避免在像(!IsPostBack){}等代码块中生成它,否则它将不会存在于你的页面中。