proglama   otázka

ASP.NET WebForms

Pokouším se vytvořit vlastní ASP:NET komponentu pomocí Web UserControl. Na googlu jsem se dočetl jak můžu předávat té komponentě určité parametry, např.:

<my:ModalWindow runat="server" MujText="Tady má být nějaký text." />

ale jak lze udělat to, když chci ten text předávat pomocí vnořeného tagu který si pojmenuju třeba content, např.:

<my:ModalWindow runat="server">
  <content>
    Tady má být nějaký text.
  </content>
</my:ModalWindow>

Lze to vůbec takhle udělat pomocí Web User Contol? A pokud ano tak jak?

Díky.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Zajímavý dotaz, také by mě to zajímalo. Vím že se to dělá přez TemplateContent, ale jak přesně nevím

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to se teda nedělá.

Uděláte vlastnost Content typu string a nad ní dáte atribut:

[PersistenceMode(PersistenceMode.InnerProperty)]

A třídě té webcontrol dáte atribut

[ParseChildren(true)]

To v případě, že vám stačí obsah typu string. Pokud uvnitř mají být nějaké serverové komponenty, dejte tu vlastnost typu ITemplate a přejmenujte ji na ContentTemplate, ať dodržujete konvence pro pojmenování.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jsem z toho trochu zmatený. Asi bude lepší když přiložím svůj kód:

MojeKomponenta.ascx

<asp:Panel ID="ModalWindowPanel" runat="server" CssClass="Window">
    
    <asp:Panel ID="ModalWindowContentPanel" runat="server">
        // Tady pořejuju vožit ContentTemplate
    </asp:Panel>

    <asp:Panel ID="ModalWindowFooterPanel" runat="server">
        // Tady pořejuju vožit FooterTemplate
    </asp:Panel>
        
</asp:Panel>

Default.aspx

<my:MojeKomponenta ID="MojeKomponenta1" runat="server">
    
    <ContentTemplate>
        Textový obsah...
    </ContentTemplate>
    
    <FooterTemplate>
        Tady budou serverové asp:buttony...
    </FooterTemplate>

</my:ModalWindow>

MojeKomponenta.ascx.cs

[PersistenceMode(PersistenceMode.InnerProperty)]
public String ContentTemplate
{
    get
    {
        return ModalWindowTitleLabel.Text.ToString();
    }
    set
    {
        ModalWindowTitleLabel.Text = value;
    }
}

ale nevím kde dát ten [ParseChildren(true)] a kde dát tu vlastnost ITemplate abych tam mohl dávat serverové tagy.

Díky za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback