基於服務器的控件對我來說並不是很好的解決方案,因爲我的面板默認情況下應始終包含一個asp 複選框,該複選框允許用戶隱藏和顯示面板內容。創建自定義面板控件
我創建了我的面板作爲模板用戶控件,但現在我有問題,我無法在其中聲明變量。
[ParseChildren(true)]
public partial class MyPanel: System.Web.UI.UserControl
{
private ITemplate messageTemplate = null;
[TemplateContainer(typeof(MessageContainer))]
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate Content
{
get
{
return messageTemplate;
}
set
{
messageTemplate = value;
}
}
void Page_Init()
{
MessageContainer container = new MessageContainer();
messageTemplate.InstantiateIn(container);
PlaceHolder1.Controls.Add(container);
}
[ParseChildren(true)]
public class MessageContainer : Control, INamingContainer
{
internal MessageContainer()
{
}
}
}
如果我在MyPage.aspx
以下則控制定義不插入MyPage.aspx.designer.cs
一個他們做通常:
<my:MyPanel>
<Content>
<asp:TextBox id = "foo" runat="server" />
</Content>
</my:MyPanel>
因此foo
不是由設計者作爲控制變量創建的,因此,我無法訪問它。
如何創建自己的面板,允許在其中聲明控件?
編輯: 我現在試用[ParseChildren(false)]
。包含變量的變量現在在表單的設計器代碼中生成。現在的問題是messageTemplate.InstantiateIn(container)
引發異常。
可能的重複http://stackoverflow.com/questions/306288/custom-asp-net-container-control? – 2010-10-01 11:59:16
沒有我的問題是不同的,至少我不會接受這個問題的答案。 – codymanix 2010-10-01 12:14:53
[我可以用asp.net usercontrols定義我自己的面板控件]可能的重複(http://stackoverflow.com/questions/3829728/can-i-define-my-own-panel-control-with-asp-net -usercontrols) – RPM1984 2010-10-01 12:33:03