如何在后面的代码中创建runat服务器DIV? ASP.NET& C#

时间:2012-10-04 19:49:32

标签: c# asp.net

我根据代码中的C#的数据库记录创建了多个DIV。我怎么能让他们runat服务器?

提前致谢..

4 个答案:

答案 0 :(得分:7)

创建并添加ASP.NET Panels

代码

<asp:Panel id="abc" runat="server">

与您完全相同:

<div id="abc" runat="server">

它们的渲染方式相同,但是其他 WebControls 的功能是Panel最常用的功能,而Panel Web控件可以在代码隐藏下为您提供更多控制,因为它会暴露更多属性。

如果您想访问服务器端的DIV,还可以添加runat="server"。它将创建为HtmlGenericControl

答案 1 :(得分:3)

这不是必需的,只需创建一个HtmlGenericControl并将其添加到控件集合中:

HtmlGenericControl div = HtmlGenericControl("div")
div.Id = "myid";
this.Controls.Add(div);

答案 2 :(得分:1)

使用自定义控件来提取数据并根据需要进行渲染。有点像这样:

public class MyDivControl : System.Web.UI.Control
{
    private System.Data.DataTable tblMyResults;
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        // Get your Data (or do it on Page_Load if you'll need it more than once
        if (tblMyResults != null && tblMyResults.Rows.Count > 0)
        {
            int iIndex = 0;
            foreach (System.Data.DataRow rItem in tblMyResults.Rows)
            {
                writer.WriteLine("<div id=\"{0}_{1}\">", this.ClientID, iIndex++);
                //Whatever content you want here using your rows.
                writer.WriteLine("</div>");
            }
        }
    }
}

然后将控件放在您想要渲染的页面上。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Solution.Web.Presentation.pub._default" MasterPageFile="~/ui/master/main.master" %>
<%@ Register TagPrefix="custom" Namespace="MyNameSpace" Assembly="MyProjectAssembly" %>
<asp:Content runat="server" ContentPlaceHolderID="cntMain">

<custom:MyDivControl runat="server" />

</asp:Content>

答案 3 :(得分:0)

您可以使用“转发器控制”

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
      <div id="box<%# Eval("ID")%>" runat="server"></div>
    </ItemTemplate>
</asp:Repeater>

并绑定来自codebehind的数据