Nell'articolo su http://www.aspitalia.com/articoli/aspplus/databinding_templating.aspx abbiamo visto cosa sono i templates di ASP.NET.
Ora con questo script creiamo un esempio pratico che ne fa uso attraverso un controllo che mostra un certo codice a seconda che l'utente sia loggato o meno, sulla falsa riga del control LoginView presente in ASP.NET 2.0.
Il nostro controllo dispone di due proprietà AnonymousTemplate e LoggedInTemplate per definire il layout da mostrare a seconda dello stato di autenticazione.
Il succo del codice sta nella creazione dei controlli. Verificando la proprietà IsAuthenticated dell'interfaccia IIdentity istanziamo uno dei templates:
namespace ASPItalia.com.LoginView
{
[ParseChildren(true),
PersistChildren(false)]
public class LoginView : Control, INamingContainer
{
[..]
protected virtual void CreateLoginView()
{
if (Context == null) return;
// Determino il template da usare
ITemplate template = null;
if (Context.User.Identity.IsAuthenticated)
template = LoggedInTemplate;
else
template = AnonymousTemplate;
if (template != null)
{
// Creo il template in un sottocontrollo
Control c = new Control();
template.InstantiateIn(c);
this.Controls.Add(c);
}
}
}Importantissimi sono gli attributi ParseChildren, che indica di parserizzare i nodi figli come proprietà del controllo e non come dei sotto controlli, e l'attributo PersistChildren, che indica se i sottocontrolli devono essere persistiti, che nel nostro caso è impostato su false.
L'uso del controllo sarà quindi molto banale, ma al tempo stesso molto comodo:
<%@ Register TagPrefix="aspitalia" Assembly="LoginView" Namespace="ASPItalia.com.LoginView" %>
<aspitalia:LoginView runat="server" id="login">
<AnonymousTemplate>
Non sei autentiacato, effettua
<asp:LinkButton onclick="login_Click" runat="server">login</asp:LinkButton>
</AnonymousTemplate>
<LoggedInTemplate>
Ciao <%#User.Identity.Name%>|
<asp:LinkButton onclick="logout_Click" runat="server">esci</asp:LinkButton>
</LoggedInTemplate>
</aspitalia:LoginView>- #920 - Utilizzare HttpModule in modalità asincrona
- Realizzare un controllo custom in ASP.NET AJAX - Seconda parte
- #906 - Specificare la Culture della pagina con InitializeCulture
- #916 - Utilizzare il ControlState di ASP.NET 2.0
- Piccoli grandi VWD Express 2008 crescono
- Realizzare applicazioni ASP.NET sicure - Prima parte
- Parte 2 e 3 della serie sui custom control ASP.NET su MSDN
- ASP.NET 3.5: global.asax vs managed modules
- #919 - Gestione degli eventi in un Composite Control per ASP.NET 2.0
- A volte ritornano... GridView vs Repeater vs ListView vs Custom
- ASP.NET 3.5 Application Services (Membership, Roles, Profile API) sotto Classic ASP con IIS 7.0
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
