0

我有一个网站,它的代码几乎可以生成页面上的所有内容。主页包含一个通过代码构建的右侧菜单。它使用 System.Web.UI.WebControls.TableCell 类并为每个新项目创建一个 td。

这是代码片段:

Public Sub BuildMainMenuStructure(ByVal Cell As TableCell, _
                                    ByVal Contents As DataTable, _
                                    ByVal ReadMode As Boolean, _
                                    ByVal CurrentPage As String, _
                                    ByVal RecSecurity As ApplicationRoleSecurity, _
                                    ByVal SourcePageRef As Integer, _
                                    ByVal IncludeMyIntranetPanel As Boolean)

    '-----------------------------------------------------------------
    'Div1 Contents
    '-----------------------------------------------------------------
    'Set up the contents in a div (panel) called pnlMainMenu1
    Dim mmContents As New MainMenuContents
    mmContents.ID = "pcaMainMenuContents"
    mmContents.SetControl(Contents, _
                          ReadMode, _
                          CurrentPage, _
                          RecSecurity, _
                          SourcePageRef)

    mintContentsCount = mmContents.Count

    Dim pnlMainMenu1 As New Panel
    With pnlMainMenu1
        .ID = "pcaMainMenuContentsPanel"
        'By default, this panel is visible:
        .Style.Add("visibility", "visible")
        .Controls.Add(mmContents)
    End With

在代码的另一个区域中,生成了主页的不同部分:

   If IncludeMyIntranetPanel And ReadMode Then

        'Set up the contents in a div (panel) called pnlMainMenu2
        Dim mmMyIntranet As New MainMenuMyIntranet
        mmMyIntranet.ID = "pcaMainMenuMyIntranet"
        mmMyIntranet.SetControl(Contents, _
                              ReadMode, _
                              CurrentPage, _
                              RecSecurity, _
                              SourcePageRef)

        Dim pnlMainMenu2 As New Panel
        With pnlMainMenu2
            .ID = "pcaMainMenuMyIntranetPanel"
            'By default, this panel is visible:
            .Style.Add("visibility", "visible")
            .Controls.Add(mmMyIntranet)
        End With

        'Add it to the cell:
        Cell.Controls.Add(pnlMainMenu2)

    End If 'End If IncludeMyIntranetPanel

它通过 Cell.Controls.Add(pnlMainMenu2) 添加内容

我的任务是尝试重新设计主页。理想情况下,我想生成 DIV 类,以便轻松定位内容。

是否有一个我可以使用的 .net 类从数据库中获取数据并创建 div 类?

4

1 回答 1

2

当然,还有其他选择,但决定使用哪一个很大程度上取决于您要完成的工作以及您使用的 .NET 版本。

实际上, Panel 控件确实将div 输出到页面,但如果您唯一的要求是“我想输出 div”,我不知道我会推荐它 - 当我需要控制时,我坚持使用 Panels ,使用 ASP.NET,诸如它包含的控件的可见性之类的东西。但是,对于现有站点,它可能是最接近 TableCell 控件的“直接”替代品。

Literal 控件存在于大多数 .NET 版本中,让您可以完全控制输出到屏幕的内容,但是,与 Panel 控件一样,它不是数据绑定控件;您需要在代码隐藏中获取信息,使用它将您喜欢的任何内容添加到文字的 .Text 中。这样做的缺点是,将我们想要的 HTML 从代码隐藏类型准确地转储到页面中,这违背了 ASP.NET 的方式。

ListView 控件实际上是一个数据绑定控件——你给它一个某种类型的数据库连接,它会循环遍历结果并显示一个列表。您可以完全控制该列表中输出的 HTML,因此您可以使用 div、lis 等,但是使用逻辑来确定要显示的内容会比较棘手(尽管几乎不可能)。(有一个较早的相关控件,Repeater,使用起来更加笨拙,但存在于早期版本的 .NET 中)

于 2012-03-02T16:23:47.833 回答