Fre riferimento ad uno user control da una classe esterna

lunedì 25 gennaio 2010 - 19.29

andrestu Profilo | Expert

normalmente faccio riferimento ad uno user control inserendo il seguente tag nella miapagina.aspx:

<%@ Reference Control="EditControl1/EditControl1.ascx" %>

e nel code Behind faccio riferimento in questo modo:

ASP.editcontrol1_editcontrol1_ascx EdC1;
EdC1 = (ASP.editcontrol1_editcontrol1_ascx)LoadControl("~/EditControl1/EditControl1.ascx");

vorrei fare la stessa cosa da una classe compresa nel progetto, come faccio? (sempre che si possa fare)

tonyexpo Profilo | Senior Member

ciao


è possibile utilizzare una classe dichiarata nel tuo progetto web o in una dll collegata instanziandola come qualunque oggetto:
<namespacetuoweb>.<tuaclasse> x = new <namespacetuoweb>.<tuaclasse>();
dim x as new <namespacetuoweb>.<tuaclasse> ()

oppure
<namespacedll>.<tuaclasse> y = new <namespacedll>.<tuaclasse>();
dim y as new <namespacedll>.<tuaclasse>()

altrimenti se ho frainteso spiegami
ciao
Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos

andrestu Profilo | Expert

Mi spiego meglio con un esempio

Ho una pagina Aspnet composta da due file:
miapagina.aspx
miapagina.aspx.cs

in più nello stesso progetto ho uno user control
EditControl1.ascx

Da quello che ho capito gli User Control finiscono sotto il namespace ASP, quindi in questo esempio se io dalla pagina miapagina.aspx.cs voglio fare riferimento al mio user control devo inserire la direttiva <%@ Reference Control="EditControl1/EditControl1.ascx" %> nel file miapagina.aspx e successivamente posso richiamarlo dalla miapagina.aspx.cs tramite il seguente codice:

ASP.editcontrol1_editcontrol1_ascx EdC1;
EdC1 = (ASP.editcontrol1_editcontrol1_ascx)LoadControl("~/EditControl1/EditControl1.ascx");

Se x esempio creo una classe nel mio progetto e dal suo costruttore voglio fare riferimento al mio user control tramite il codice precedente non posso, questo perchè nella classe non posso inserire la direttiva <%@ Reference Control="EditControl1/EditControl1.ascx" %> come invece ho fatto x la miapagina.aspx
Cioè se non erro lo user control e la classe page sono in qualche modo strettamente collegate...

tonyexpo Profilo | Senior Member

Ho capito il tuo problema

quando usi uno usercontrol dall'HTML devi utilizzare la direttiva <%@ Register%> per dargli un nome.....
mentre quando lo usi dal codice è una classe come le altre quindi se il tuo progetto web si chiama MioWeb e il tuo controllo EditControl (con i file EditControl.ascx + EditControl.ascx.cs o .vb) potrai accedergli così:
MioWeb.EditControl ec1 = this.EditControl1; dim ec1 as MioWeb.EditControl = Me.EditControl1



Antonio Esposito
MCTS, MCP

http://blogs.dotnethell.it/espositos
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5