개발자가 태그 (예 : PersistenceMode (PersistenceMode.InnerProperty) 특성으로 장식 된 속성)를 사용하여 컬렉션을 채울 수있는 컨트롤을 개발하려고합니다. example에서 Brian Chavez 이하는 내가 원하는 것을하지만 난 UserControl에서 제어 상속을 가지고 제어하지하려면 여기 UserControl 및 내부 속성 문제
제가 vb.net에있는 코드입니다.AggregateFeeds.ascx.vb
Imports Microsoft.VisualBasic
<ParseChildren(True)>
<PersistChildren(False)>
Public Class AggregateFeeds
Inherits UserControl
Public Sub New()
MyBase.New()
Me.Feeds = New RssFeedCollection()
Me.Settings = New AggregateSettings()
End Sub
Private _Feeds As RssFeedCollection
Private _Settings As AggregateSettings
<PersistenceMode(PersistenceMode.InnerProperty)>
Public Property Feeds As RssFeedCollection
Get
Return _Feeds
End Get
Private Set(ByVal value As RssFeedCollection)
_Feeds = value
End Set
End Property
<PersistenceMode(PersistenceMode.InnerProperty)>
Public Property Settings As AggregateSettings
Get
Return _Settings
End Get
Private Set(ByVal value As AggregateSettings)
_Settings = value
End Set
End Property
End Class
Public Class AggregateSettings
Public Property TimeOut As Integer
Public Property CacheResults As Boolean
Public Sub New()
TimeOut = 100
CacheResults = True
End Sub
End Class
Public Class RssFeedCollection
Inherits List(Of RssResource)
End Class
Public Class RssResource
Public Property Url As String = String.Empty
End Class
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="ucAdminTabControl.ascx.vb" Inherits="AggregateFeeds" %>
내 테스트 페이지가 진짜 간단한과 같습니다 : 나는 단순히 객체라는 컴파일러 오류가 컴파일 할 때 지금처럼
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %>
<%@ Register Src="~/Survey/Controls/ucAdminTabControl.ascx" TagName="AggregateFeeds" TagPrefix="uc" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<uc:AggregateFeeds runat="server" ID="af">
<Settings CacheResults="False" TimeOut="250" />
<Feeds>
<uc:RssResource Url="http://test.com" />
</Feeds>
</uc:AggregateFeeds>
</div>
</form>
</body>
</html>
처럼ASCX 파일은 보인다 인스턴스가 위의 행에있는 객체의 인스턴스로 설정되지 않았습니다. 태그를 꺼내면 페이지가 잘로드되고 설정 객체는 태그의 값을 반영합니다. 왜 컬렉션이 올바르게 채워지는 데 문제가 있습니까?
답변 해 주셔서 감사합니다. 이것은 작동하지만 Brian Chavez의 사이트가 예상대로 작동한다는 것을 알고 있으며이 작업을 포함하지 않으며 RssFeedCollection을 단순한 객체의 간단한 컬렉션으로 더 잘 어울리는 UserControl으로 만드는 것을 피하고 싶습니다. –
@EDIT : Control 만 상속 받아야합니다. 저의 실수입니다. –
새로운 솔루션을 추가했습니다. 이전 버전은 여전히 "AddParsedSubObject"메소드의 사용을 강조하는 데 유용하지만 새로 추가 된 속성을 사용하면 해당 속성을 올바르게 사용할 수 있습니다. –