asp.net 2.0 e UserControl

di Marco Leoncini, in asp.net,
 anche se spesso e volentieri, per migrare un applicazione da asp.net 1.x a 2.0 è sufficiente la semplice ricompilazione, in alcuni casi sarà necessario il nostro intervento.
prendiamo ad esempio gli UserControl.

in questo caso la compilaziona andrà via liscia.

MyPlaceHolder.Control.Add(Page.LoadControl("percorso");

in questo caso possono invece presentarsi dei problemi

SimpleUserControl MyControl = this.Page.LoadControl("percorso");

il nuovo modello di compilazione, genera un assembly per ogni risorsa, in poche parole il tipo SimpleUserControl potrebbe non trovarsi nel solito assembly della pagina.

per ovviare a questo problema è necessario registrare nella pagina l'UserControl, mediante la direttiva Register

<%@ Register Src="SimpleUserControl.ascx" TagName="SimpleUserControl" TagPrefix="uc2" %>

procedura da ripetere per ogni UserControl vorremo caricare nella pagina.

un approccio più flessibile è creare un interfaccia (piazzata in App_Code)

public interface IDaVinci
{
string Text { get;set;}
}

che i nostri UserControl implementeranno

public partial class SimpleUserControl : System.Web.UI.UserControl , SimpleInterface.IDaVinci
{
protected void Page_Load(object sender, EventArgs e)
{

}

#region IDaVinci Members
public string Text
{
get
{
return Label1.Text;
}
set
{
Label1.Text = value;
}
}
#endregion
}

togliamo la direttiva Register dalla pagina e:

SimpleInterface.IDaVinci MyControl = (SimpleInterface.IDaVinci)this.Page.LoadControl("percorso");
MyControl .Text = " 33 33 33";

così facendo ci siamo tolti dall'obbigo di registare ogni UserControl che avremmo utilizzato, consentendoci di caricare n tipi di UserControl appatto implementino l'interfaccia IDaVinci.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese