Salve a tutti
Dovrei richiamare un funzione da una webform ad un'altra.
Ad esempio
nella form1 mi dichiaro una variabile integer
dim pippo as integer
pippo = nomefunzione(parametri)
non riesco a capire come posso fare
Grazie
Salve a tutti
Dovrei richiamare un funzione da una webform ad un'altra.
Ad esempio
nella form1 mi dichiaro una variabile integer
dim pippo as integer
pippo = nomefunzione(parametri)
non riesco a capire come posso fare
Grazie
Trattandosi di Web Form, il forum ASP.NET è senz'altro il più adatto.Originariamente inviato da fexo
Dovrei richiamare un funzione da una webform ad un'altra.
Devi tenere conto del fatto che le Web Form non funzionano allo stesso modo delle Windows Forms, per un motivo molto semplice: il mezzo con cui vengono visualizzate, un browser HTML.Originariamente inviato da fexo
nella form1 mi dichiaro una variabile integer
dim pippo as integer
pippo = nomefunzione(parametri)
non riesco a capire come posso fare
Ciascuna Web Form di cui disponi viene creata nel momento in cui richiami la pagina corrispondente .aspx.
Se hai una funzione che deve essere sfruttata da più Web Form, ti conviene inserirla in una libreria (assembly) separata, magari dichiarandola Shared (non devi creare un oggetto della classe in cui la funzione si trova), utilizzarla da entrambe le Web Forms dopo aver importato il namespace corrispondente.
Molti fraintendono l'uso e lo scopo di ASP.NET, che si prefissa l'obiettivo di rendere la progettazione delle Web Form semplice come quella delle Windows Form, ma non il funzionamento, poichè architetturalmente sono cose completamente differenti nonostante vengono rese molto simili tra loro dal punto di vista dell'utente.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Lascirami dissentire su questi punti. Se il codice delle pagine è precompilato come nel caso di Visual Studio, è possibile richiamare la classe ed eventuali funzioni presenti in altre pagine come se facessero parte di classi distinte senza il minimo problema.Ciascuna Web Form di cui disponi viene creata nel momento in cui richiami la pagina corrispondente .aspx.
Molti fraintendono l'uso e lo scopo di ASP.NET, che si prefissa l'obiettivo di rendere la progettazione delle Web Form semplice come quella delle Windows Form, ma non il funzionamento, poichè architetturalmente sono cose completamente differenti nonostante vengono rese molto simili tra loro dal punto di vista dell'utente.
Ciao!![]()
Visual Studio, quando compila il progetto, inserisce tutte le classi di pagine (con funzioni, metodi e proprietà), in un unico assembly che inserirà nella cartella bin della web application. Ed è a questa dll che faranno riferimento le varie pagine per l'esecuzioni della pagina.
Ecco che, dunque, si può istanziare da altre pagine classi appartenenti ad altre pagine asp.net per richiamare funzioni e quant'altro dichiarato pubblicamente.
Se ipotizziamo che nella pagina "seconda.aspx" sia presente la classe "seconda" con all'interno la funzione pubblica "MiaFunzione", dalla pagina "prima.aspx" possiamo dichiarare tranquillamente:
Se tale funzione fosse dichiarata come shared la cosa sarebbe ancora più semplice visto che potremmo richiamare tale funzione direttamente senza istanziare la classe:codice:dim sec as new seconda seconda.MiaFunzione(...)
Il problema di una tale tecnica è la leggibilità dell'intera applicazione compromessa. La soluzione migliore è come quella che tu hai suggerito: la creazione di una classe esterna a cui accedere da entrambe le pagine.codice:seconda.MiaFunzione(...)
Ciao![]()
AZ [Microsoft - .NET MVP]
Mia Home page: http://ciclismo.sitiasp.it
Asp.Net community: http://www.aspitalia.com
Il mio blog: http://blogs.aspitalia.com/az
Concordo su tutto quanto hai detto. Non ho tuttavia suggerito la soluzione dell'inserimento della funzione nella classe relativa alla pagina secondaria proprio perchè, secondo il mio modo di progettare le applicazioni, è un chiaro segnale di un difetto di progettazione dato che la funzionalità condivisa andrebbe (quasi) sicuramente posta in una terza classe.Originariamente inviato da AndreaZani
[...]
Il problema di una tale tecnica è la leggibilità dell'intera applicazione compromessa. La soluzione migliore è come quella che tu hai suggerito: la creazione di una classe esterna a cui accedere da entrambe le pagine.
Tra l'altro, so che non tutti fanno uso di Visual Studio e della tecnica "code behind", perciò in tali casi la soluzione era decisamente inattuabile.
In terzo luogo, mi sentivo di persuadere l'autore originale del quesito dal considerare una Web Form del tutto alla stregua di una Windows Form: la prima tipologia di "maschera" è legata a meccanismi estranei alla seconda, come il PostBack e altre caratteristiche infrastrutturali che avrebbero potuto generare, in seguito, errori difficilmente individuabili e concettualmente incompatibili, soprattutto se si procedeva all'uso di eventuali controlli della pagina per ottenere il risultato sperato (non si sa mai).
Fermo restando la piena correttezza di tutto ciò che hai detto, quindi, ho evitato (e perciò scoraggiato) quella soluzione anche per prevenire eventuali problemi futuri.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Purtroppo tale tecnica funziona anche con inserendo il codine nella pagina, è sufficiente dichiarare il nome di classe nella direttiva page e che questa pagina sia già stata richiamata, quindi compilata, per poter accedere a funzioni shared presenti all'interno.Tra l'altro, so che non tutti fanno uso di Visual Studio e della tecnica "code behind", perciò in tali casi la soluzione era decisamente inattuabile.
Se a livello di gestibilità è già un casino con Visual Studio immagina con il codice inline.
Quoto completamente!Fermo restando la piena correttezza di tutto ciò che hai detto, quindi, ho evitato (e perciò scoraggiato) quella soluzione anche per prevenire eventuali problemi futuri.![]()
Ciao![]()
AZ [Microsoft - .NET MVP]
Mia Home page: http://ciclismo.sitiasp.it
Asp.Net community: http://www.aspitalia.com
Il mio blog: http://blogs.aspitalia.com/az