Salve a tutti, volevo porvi questo quesito, rivisto molte volte, ma mai focalizzato sull'ottimizzazione.

Premetto che ogni utente prima ti poter operare nel portale deve autenticarsi.

Abbiamo questi elementi :

1) Classe "Nominativo" creata da me
2) Pagina "default.aspx"
3) Un bottone "Carica" in default.aspx, carica un nominativo dal database
4) Un bottone "Aggiorna" in default.aspx aggiorna il nominativo caricato precedentemente

La classe "Nominativo" contiene le sub:
A) CaricaNominativo (ByVal ID as integer)
B) Aggiorna

Nella pagina default.aspx si ha il seguente codice:

codice:
Imports Nominativi
Partial Public Class _Default
    Inherits System.Web.UI.Page

   Dim Nomin As Nominativo
       
Protected Sub carica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles carica.Click
        Nomin = New Nominativo
        Nomin.CaricaNominativo(8)
    End Sub

Protected Sub Aggiorna_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Aggiorna.Click
        With Nomin
            .Nome = "Mario"
            .Cognome = "Rossi"
            .Aggiorna()
        End With
    End Sub

End Class
Se si clicca sul bottone "Carica", dove viene creata una nuova istanza della classe, la sub carica un record, in questo caso il record con ID=8

Come ben sappiamo se successivamente si va a cliccare sull'altro bottone "Aggiorna", il compilatore ci restituisce un errore che ci dice: "Riferimento a un oggetto non impostato su un'istanza di oggetto."Perxhè Asp.net nativamente non tiene in memoria lo stato precedente di una pagina che ha effettuato un PostBack.

La soluzione migliore è utilizzare la SESSION ? nel momento in cui si hanno molti utenti loggati che operano insieme, il server ne risente in prestazioni? ci sono altre valide alternative ?