Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    .NET MVC2 esiste un modo per eseguire una certa azione prima di qualsiasi altra?

    Ciao a tutti, sono nuovo della programmazione .NET e in particolare mi sto specializzando nell'MVC2.

    Mi sono studiato bene come funziona il pattern.


    La mia richiesta è abbastanza semplice:
    sto creando un software amministrativo ed ogni pagina ha bisogno di controllare se l'utente si è autenticato tramite una variabile che mi sono salvato nella sessione.

    Esiste un sistema per eseguire una pre-azione prima di ogni singola azione di un controller? Vorrei appunto controllare se l'utente è loggato, in tal caso tutto procederà correttamente, altrimenti verrà rispedito alla prima pagina.



    Per il momento sto facendo il controllo all'inizio di ogni singola azione , non mi sembra molto comodo e sono sicuro che ci siano metodi migliori.
    Il cinghiale è un animale raffinato

  2. #2

    [SOLUZIONE TROVATA]

    Mi rispondo da solo:


    IL COSTRUTTORE.
    Se aggiungo il controllo della sessione nel costruttore in una roba del genere:

    codice:
    public class ServizioController : Controller
    {
      // costruttore
      public ServizioController() {
        if (Session["UtenteLoggato"] == null) View("Login", "Home"); /* se non loggato lo rispedisco alla home*/
      }
    
    // ... altro codice...
    }
    A questo punto mi aspetto solo una conferma o eventuli alternative dai puiù esperti.
    Il cinghiale è un animale raffinato

  3. #3

    ASSOLUTAMENTE NO

    No no non funziona per niente,
    CANCELLATE LE INFORMAZIONI DEL SECONDO POST!
    Se uso il costruttore non vengono inizializzate la variabili Session, Application ecc. a meno che non chiamo base()
    codice:
      // costruttore
    public ServizioController() : base() {
      if (Session["UtenteLoggato"] == null) View("Login", "Home"); /* se non loggato lo rispedisco alla home*/
    }
    Ma non funziona il redirect. Il metodo View mi viene ignorato...



    Purtroppo sono ancora daccapo... esiste un metodo che agisce dopo la costruzione del Controller ma prima di qualsiasi azione (Ho provato anche Initialize(), fa come il costruttore)?

    L'unico sistema che ho trovato stato è fare il controllo all'interno di ogni singola azione (ogni singolo metodo del Controller), ma è una ripetizione di codice.
    Il cinghiale è un animale raffinato

  4. #4
    SOLUZIONE VERA TESTATA FUNZIONANTE
    Usare i FILTRI.

    In particolare l'ActionFilter.

    Creare una classe simile a questa nel Model:
    codice:
      public class ServizioActions : ActionFilterAttribute
      {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
          filterContext.HttpContext.Response.Write("Prima dell'azione");
        }
    
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
          filterContext.HttpContext.Response.Write("Dopo l'azione");
        }
      }
    e piazzare un attributo simile prima della definizione della classe controller:
    codice:
      [ServizioActions]
      public class ServizioController : Controller
      {
    ...
    Spero che possa servire a qualcuno. Ciao a tutti
    Il cinghiale è un animale raffinato

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.