Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Creare una classe parziale collegata alla classe default.aspx.cs

    esiste la possibilità di creare una classe parziale collegata alla classe predefinita default.aspx.cs?
    Cioè io apro VWD2008 express, creo un nuovo sito, a sto punto mi ritrovo la mia default.aspx e il file default.aspx.cs il cui contenuto inizia con

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    }

    se io a questo punto creo una nuova classe il cui contenuto è il seguente

    public partial class _Default : System.Web.UI.Page
    {
    }

    non creo in questo modo una classe parziale della classe default.aspx.cs? La risposta è no perchè il compilatore al momento dell'esecuzione mi da errori.
    In che modo dunque posso crearla?
    Il punto è che io vorrei aggiungere una classe che possa utilizzarla come se stessi utilizzando la classe default.aspx.cs, e cioè raggiungere i controlli creati nella default.aspx...

  2. #2
    devi semplicemente scrivere
    codice:
    partial class _Default
    perchè hai già definito in Default.aspx.cs che la classe _Default è "public" ed il compilatore ti dà errore proprio perchè lo stai specificando nuovamente

    quindi elimina public

    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    ok grazie mille ora funziona, il punto è che mi aspettavo di raggiungere anche da qui i controlli inseriti nella default.aspx.
    Ma se inserisco nella mia classe parziale:

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    e poi all'interno dell'evento Page_Load cerco qualche controllo non lo trovo.

    e come seconda cosa posso aggiungere da questa classe parziale dei controlli alla mia pagina default.aspx?

    Cioè le due cose credo siano collegate non trovandoli forse non posso neanche aggiungerli giusto?

  4. #4
    dovresti andare in override su Page_Load che nella prima classe parziale (quella originale) deve essere dichiarato come "virtual", successivamente lo puoi intercettare nell'altra classe
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  5. #5
    si ora provo ma a parte questo cè un altra cosa che non capisco.

    Se le due classi sono parziali e in una delle due inizializzo un nuovo campo public, nell'altra non lo trovo come mai? in teoria se sono parziali dovrei trovarlo giusto?

  6. #6
    Be, devi trovarlo per forza, l'esempio è come questo:
    Pagina1.aspx.cs:
    codice:
    public partial class Demo
    {
        public string CampoPubblico;
    }
    Pagina1.cs (Classe parziale che riprende il codice della prima)
    codice:
    partial class Demo
    {
        public void foo()
        {
            this.CampoPubblico = "prova";
        }
    }
    ovviamente non è corretto se cerchi di richiamare questo campo all'interno della classe stessa (servirebbero conoscenze di base sulla OOP :master: ).
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  7. #7
    guarda forse cè qualcosa che sfugge anche a te, ho già provato queste cose in VisualC# Express e funzionano, qui invece no
    questo è il mio esempio, molto simile al tuo

    pagina default.aspx.cs:

    public partial class _Default : System.Web.UI.Page
    {
    public string test = "prova";
    }


    pagina classe parziale aggiunta:

    partial class _Default : System.Web.UI.Page
    {
    public void _Default()
    {
    }
    }

    il campo test non lo trovo ne da dentro il costruttore ne da fuori... provare per credere

  8. #8
    Non penso mi sia sfuggito nulla. Devi controllare il namespace, deve essere uguale a quello della prima classe parziale creata.
    Immagini allegate Immagini allegate
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  9. #9
    il punto è che non riesco a trovarla neanche nella stessa classe, comè possibile? io uso Visual Web Developer Express 2008 i tuoi esempi funzionano con Visual C# ma se usi la stessa logica con i file di un progetto "nuovo sito web" mi sa che bisogna fare qualcosa di diverso, guarda l'immagine che inserisco, più chiaro di così...
    Immagini allegate Immagini allegate

  10. #10
    Prima di tutto è sbagliatisismo quella cosa sottolineata in rosso che hai scritto, non puoi assegnare una variabile all'interno di una classe, lo puoi fare in un metodo o dall'esterno con un'altra classe ma non cosi

    Nell'altra pagina parziale in un metodo se provi a richiamare la proprietà dovrestri trovarla, ma ripeto, in un metodo non nella classe.

    Continuo a dirlo, sono necessarie conoscenze di OOP
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.