1
我試圖實現一個自定義的面板控件,將作爲一個命名容器。到目前爲止,這是我所做的。如何使用INamingContainer實現自定義面板?
首先,這是我的自定義控制,MyPanel ...
[ToolboxData("<{0}:MyPanel runat=server></{0}:MyPanel>")]
public class MyPanel: Panel, INamingContainer
{
}
我嘗試使用它像這樣:
<cc1:MyPanel ID="A" runat="server">
<asp:HyperLink ID="TestHyperLink" runat="server" />
</cc1:MyPanel>
<cc1:MyPanel ID="B" runat="server">
<asp:HyperLink ID="TestHyperLink" runat="server" />
</cc1:MyPanel>
顯然,這是行不通的,這將是太容易了。 ASP.net仍然抱怨存在2 DocumentHyperLink:
The ID 'DocumentHyperLink' is already used by another control.
我該如何解決這個問題?
謝謝。
謝謝,我以前曾經見過這個。但是,我真的想嘗試一個專門的面板,而不是模板控件。如果不使用模板,是否真的沒有辦法重複ID? – md1337 2010-09-08 21:08:01
@ md1337:我不確定。面板設計允許面板內的服務器控件與頁面類的成員變量相關聯。模板沒有。我想不出你描述的行爲是否具有開箱即用的控制能力。面板,嚮導,MultiView都是非模板化的,並且都顯示您遇到的行爲。我有點好奇,爲什麼你想避免模板? – kbrimington 2010-09-08 21:15:39
我想我只是想避免模板的混亂,當我需要的只是一個簡單的容器,如面板,增加了爲其子控件提供獨特ID的功能。但是,似乎唯一的解決方案是像您提到的自定義模板控件。實際上有一個很好的解決方案http://stackoverflow.com/questions/1912283/asp-net-user-control-inner-content – md1337 2010-09-08 21:22:43