Ich versuche, einem vereinfachten zusammengesetzten Steuerelement, das ein Label und ein TextBox enthält, eine Vorlage hinzuzufügen. Ich möchte, dass meine Marke, so etwas zu sehen:Wie kann ich ein ASP.NET-Template-Composite-Steuerelement haben?
<test:FormItem ID="fi" runat="server" Title="MyTitle" Text="My Text!">
<TestTemplate>
<i>
<%# Container.Title) %></i>
<br />
<%# Container.Text %>
</TestTemplate>
</test:FormItem>
Ich habe eine templateContainer Klasse, die Eigenschaften für das TextBox und Label hat.
public class TemplateContainer : WebControl, INamingContainer
{
public TextBox Text { get { return m_item.Text; } }
public Label Title { get { return m_item.Title; } }
private FormItem m_item;
public TemplateContainer(FormItem item)
{
m_item = item;
}
}
Im Haupt FormItem Klasse I einen CreateControlHierarchy() -Methode, die von Create aufgerufen wird():
protected virtual void CreateControlHierarchy()
{
m_itemTemplateContainer = new TemplateContainer(this);
TestTemplate.InstantiateIn(m_itemTemplateContainer);
Controls.Add(m_itemTemplateContainer);
}
, was ich will für die Vorlage ist die tatsächliche Kontrolle zu machen. Stattdessen ruft es ToString() auf dem Steuerelement auf und zeigt System.Web.UI.WebControls.Label und System.Web.UI.WebControls.TextBox an. Gibt es eine Möglichkeit, die Vorlage zu der Sammlung der Steuerelemente hinzuzufügen, statt nur ToString() für sie aufzurufen?
Hinweis: Ich habe auch versucht, die Textbox und die Beschriftung der Steuerelementsammlung des Containers hinzuzufügen, die dasselbe tut.
Ich möchte ein Composite-Steuerelement (Steuerelement der Steuerelemente) erstellen und dem Benutzer Markup um die Steuerelemente hinzufügen. Hinweis: Ich möchte kein Benutzersteuerelement erstellen. Ich habe benutzerdefinierte Logik für die Steuerelemente in der Composite-Steuerelement und ich möchte es über Anwendungen verwendet werden. – rmw
Müssen die Benutzer die eigentlichen Steuerelemente selbst verschieben oder Markup vor und nach ihnen platzieren? – codemonkeh