Templated Webcontrol (ascx)



  • Hallo,
    ich versuche ein "templated WebControl" zu erstellen. Soll heissen, dass ich im Endeffekt eine .ascx Datei erstellen will, die ich dann wie ein normales (User-)Control anderen Seiten hinzufügen kann.

    also z.b. so:

    <%@ Register TagPrefix="TagName" Namespace="NamespaceName" Assembly="testcontrol" %>
    
    <TagName:className id="_content" Runat="server" />
    

    Das Besondere dbaie soll sein, dass ich dann in der aspx-datei (die das Control benutzt) diesem Control weitere Control "zuwesien" kann. in der Art wie z.b.:

    <CustomControls:templateContent id="_content" Runat="server" >
        Radio1: <asp:RadioButton ID="RadioButton1" runat="server" />
        Radio2: <asp:RadioButton ID="RadioButton2" runat="server" />
    </CustomControls:templateContent>
    

    bzw

    <CustomControls:templateContent id="_content" Runat="server" >
        <content>
            Radio1: <asp:RadioButton ID="RadioButton1" runat="server" />
            Radio2: <asp:RadioButton ID="RadioButton2" runat="server" />
        </content>
    </CustomControls:templateContent>
    

    ich habe mittlerweile auch ein (sehr kurzes) Besipiel im netz gefunden (http://www.devhood.com/Tools/tool_details.aspx?tool_id=583). Nur leider funktioniert das nicht wie es soll. Ich bekomme immer den Fehler NullReference-Exception in der Zeile

    value.InstantiateIn(_content.ContentControl);
    

    und bei den Teil versteh ich auch nicht genau wie das Funktioniert: (verbindung zwischen Public members(in codebehind) und HTML-(aspx)-Code und die Zeile mit dem InstantiateIn()

    kann mir da jemand weiterhelfen? komme mittlerweile nicht mehr vorran.



  • Ich hätte jetzt einen Vorschlag:

    Du nimmst einen Placeholder, den du als Property mit Namen "Content" nach außen gibst. Wichtig du musst der Property ein Attribut verpassen -> [PersistenceMode(PersistenceMode.InnerProperty)], vielleicht musst du bei der Klasse auch noch [ParseChildren(true)] als Attribut setzten.

    Evtl. geht das auch über ITemplate, aber ich glaube damit kann man nur HTML-Code verarbeiten. -> testen


Anmelden zum Antworten