【发布时间】:2010-10-22 02:59:18
【问题描述】:
我希望创建一个用户/服务器控件,该控件将使用以下内容创建:
<my:MyListControl runat="server">
<asp:ListItem Text="Test1" Value="Test1" />
<asp:ListItem Text="Test2" Value="Test2" />
</my:MyListControl>
我只是在这里寻找一个开始: 文章或代码示例。
我应该从哪个基类继承?要覆盖什么?
可能如何自定义我的控件接受的子项(my:ListItem 而不是 asp:ListItem)。
我要做的是为我网站的一小部分创建一个非常简单的面包屑控件。我已经将所有这些都与股票 ASP.NET 控件一起使用,但是这些项目是在代码中添加的,这意味着修复拼写错误或格式错误需要重新编译,这并不理想。
编辑:
这是我的代码,并在下面添加了 Josh 的建议:
命名空间 MySite.Controls 部分类面包屑 继承用户控件
Private m_BreadCrumbs As New List(Of BreadCrumbItem)
<PersistenceMode(PersistenceMode.InnerProperty)> _
Public Property Items() As List(Of BreadCrumbItem)
Get
Return m_BreadCrumbs
End Get
Set(ByVal value As List(Of BreadCrumbItem))
m_BreadCrumbs = value
End Set
End Property
Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Bind()
End Sub
Private Sub Bind()
lvCrumbs.DataSource = Items
Me.DataBind()
End Sub
End Class
Public Class BreadCrumbItem
Private m_Text As String
Public Property Text() As String
Get
Return m_Text
End Get
Set(ByVal value As String)
m_Text = value
End Set
End Property
Private m_Url As String
Public Property Url() As String
Get
Return m_Url
End Get
Set(ByVal value As String)
m_Url = value
End Set
End Property
End Class
结束命名空间
那么我的页面代码是这样的:
<%@ Page Language="VB" AutoEventWireup="false" Inherits="MySite.MyPage" Title="My Page" Codebehind="MyPage.aspx.vb" %>
<%@ Register TagPrefix="my" Namespace="MySite.Controls" Assembly="MySite" %>
<my:BreadCrumbs ID="breadcrumbs" runat="server">
<Items>
<my:BreadCrumbItem Text="Another page" Url="AnotherPage.aspx" />
</Items>
</my:BreadCrumbs>
【问题讨论】:
-
最终的 HTML 标记目标是什么?类似于:
- Test1
- Test2
-
是的,我吐出的 HTML 是 ul/li。不需要asp:ListItem,只是问的时候不知道还能叫什么
标签: .net asp.net user-controls servercontrols