System.Web.UI.WebControls.TableCell的替代方案
我有一个网站,它是代码几乎可以生成页面上的所有内容。主页由正在通过代码构建的右侧菜单组成。它使用System.Web.UI.WebControls.TableCell类并为每个新项目创建一个td。System.Web.UI.WebControls.TableCell的替代方案
下面是代码的一个片段:
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的内容。添加(pnlMainMenu2)
我的任务是尝试重新覆盖主页。理想情况下,我想生成DIV类,以便轻松定位内容。
是否有一个.net类,我可以使用它从数据库中抓取数据并创建div类?
当然,还有其他选择,但决定使用哪一个取决于您正在尝试完成的内容以及您使用的.NET版本。
Panel control其实输出div到页面,但如果你唯一的要求是“我要输出div”,我不知道我会推荐它 - 我坚持面板当我需要使用ASP.NET来控制它包含的控件的可见性。但是,对于现有的网站,它可能是TableCell控件最接近的“放入”替代品。
Literal control存在于.NET的大多数版本中,可让您全面控制输出到屏幕的内容,但与面板控件一样,它不是数据绑定控件;你需要在代码隐藏中获取你的信息,用它来添加任何你喜欢的文字的.Text。这样做的缺点是,将我们想要的HTML代码转换为代码隐藏的页面会违背ASP.NET的方式。
ListView control实际上是一个数据绑定控件 - 您给它一个某种类型的数据库连接,它会遍历结果并显示一个列表。您可以完全控制列表中输出的HTML,因此您可以使用div,lis等,但使用逻辑来确定要显示的内容会更棘手(尽管几乎不可能)。 (有一个更早的,相关的控制,这是更可用,但存在于早期版本的.NET)
我在那里有点罗嗦,但我觉得我应该重申:既不是面板控制也不是文字控制有任何形式的数据库交互内置;你需要做你的数据库的东西,并通过代码隐藏添加输出。此外,Panel控件实际上并不采用文字,与TableCell不同 - 是的,它会输出DIV,但您需要添加一个Label或HyperLink等控件来实际输出文字。 – 2012-03-02 16:27:39
看到我正在使用的网站的问题是一切都是数据库/代码生成。我不认为开发人员知道哪些样式表在哪里!有关于“重新剥皮”主页的讨论,但很多“东西”仍在继续,所以它不是用新设计剥离主页的情况。 – 2012-03-02 16:36:39