Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75

    Chiarimenti sul Page_Load

    Sono alle prese con il seguente problemino:
    ho due file:
    1) Classe.vb
    2) Pagina.aspx

    Come posso far sì che Classe.vb chiami Pagina.aspx, facendola caricare dal browser?


    Avevo pensato di inserire in Classe.vb una chiamata del tipo:

    dim var as new Pagina
    var.Page_Load(sender as sender, e as System.EventArgs),

    ma non ho idea di cosa scrivere in "sender" e "e".

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    la sintassi non è corretta
    forse nemmeno la logica

    cmq ponendo che tu hai
    Classe.vb
    Pagina.aspx
    Pagina.aspx.vb

    Pagina.aspx.vb è fondamentale, cioè: dentro ad essa ci sarà una classe denominata Pagina che tu potrai richiamare.

    per richiamare il page_load credo tu possa usare
    var.Page_Load(Nothing, System.EventArgs.Empty)

    ora non so quale sia il tuo scopo (anzi se me lo chiarisci forse posso darti qualche consiglio in +), ma ricorda che in .net esiste l'ereditarietà tra classi, esiste la possibilità di creare classi personalizzate e richiamarle ovunque.. per cui io opterei per una di queste due strade

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    Scusa. La sinstassi non era corretta per la fretta.
    Ovviamente nel codice ci sono le giuste dichiarazioni e i file sono tre, come hai giustamente specificato.

    Spiego un po' meglio il problema, in modo che tu possa capire la logica:
    ho una pagina aspx principale, nella quale carico un controllo utente ascx di volta in volta diverso.
    Quale ascx caricare è deciso non nel codebehind della pagina aspx centrale, ma altrove ( è per esigenze di progetto ed è un aspetto che non posso modificare ), per intenderci in Classe.vb

    Avevo provato a usare la direttiva @register nella pagina principale aspx, ma non so rendere l'indicazione relativa all'Src parametrica, in altre parole una variabile da impostare con il nome del file ascx di turno.

    Suggerimenti?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    la prima cosa che mi viene in mente:
    per ogni pagina aspx, lato codebehind, crei una proprietà string.
    nel page_load imposti un valore default e carichi il controllo nella pagina (se non sai come fare ti rimando a una ricerca in questo forum con la stringa "user control" o "usercontrol" o "loadcontrol".. troverai certamente degli esempi).

    nella classe.vb utilizzi la sintassi del tipo:
    Dim pag as Pagina = New Pagina()
    Pagina.NomeProprieta = "controllo.ascx"

    prova a vedere se ho capito bene quello che vuoi fare..

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    scusate ma con asp.net si possono richiamare le pagine da aprire cosi
    Dim pag as Pagina = New Pagina()
    Pagina.NomeProprieta = "controllo.ascx" ???

    o ho capito male ???'

    io non ci riesco cosi.

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ma non sarebbe meglio, per logica, creare un solo controllo personalizzato ed impostare una proprietà che fa venire fuori un contenuto diverso ogni volta, sfruttando magari una proprietà leggibile (Get) della Classe.vb ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    Riporto il codice scritto fin'ora, così sono più chiara:

    -------Classe.vb--------------

    Public Class Classe


    Public Sub carica ()

    Dim view

    view = new Pagina ()
    Pagina.path = ”NomeControllo.ascx”
    view.Page_Load ( Nothing , System.EventArgs.Empty )

    End Sub

    End Class


    Pagina.aspx.vb---------------
    NB: La pagina contiene un place holder.



    Public Class Pagina

    Public path As String


    Sub Page_Load ( ByVal sender as System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim control As Control
    Control = LoadControl(path)
    PlaceHolder.Controls.Add(control)

    End Sub


    L’errore che ottengo è:
    Object reference not set to an instance of an object in merito all’istruzione:
    PlaceHolder.Controls.Add(control)


    Ovviamente "Nome Controllo.ascx" è ciò che cambia a seconda dei casi.
    In effetti il file Classe.vb è essenzialmente un grande case select che ho omesso per semplicità.

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    prova a vedere innanzitutto se trova il controllo, magari facendoti restituire l'id...

    codice:
    control = LoadControl(path) 
    response.write(control.ClientId)

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    75
    response is not available in this context...

  10. #10
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    a me cosi
    view = new Pagina ()
    Pagina.path = ”NomeControllo.ascx”


    non funziona.

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.