MVC: il codice per salvare i dati nella cache o nella sessione appartiene al controller?

2

Sono un po 'confuso se il salvataggio delle informazioni nel codice di sessione di seguito, appartiene all'azione del controller come mostrato di seguito o dovrebbe far parte del mio Modello?

Vorrei aggiungere che ho altri metodi di controller che leggeranno più avanti questo valore di sessione.

  public ActionResult AddFriend(FriendsContext viewModel)
  {
        if (!ModelState.IsValid)
        {                
            return View(viewModel);
        }

        // Start - Confused if the code block below belongs in Controller?

        Friend friend = new Friend();
        friend.FirstName = viewModel.FirstName;
        friend.LastName = viewModel.LastName;
        friend.Email = viewModel.UserEmail;            

        httpContext.Session["latest-friend"] = friend;

        // End Confusion

        return RedirectToAction("Home");
    }

Ho pensato di aggiungere una classe di utilità statica nel mio modello che fa qualcosa di simile in basso, ma sembra semplicemente stupido aggiungere 2 righe di codice in un altro file.

public static void SaveLatestFriend(Friend friend, HttpContextBase httpContext)
{
    httpContext.Session["latest-friend"] = friend;
}


public static Friend GetLatestFriend(HttpContextBase httpContext)
{
    return httpContext.Session["latest-friend"] as Friend;
}
    
posta newbie 28.04.2013 - 10:24
fonte

2 risposte

1

Se fossi io, creerei una nuova classe chiamata SessionManager (o qualcosa del genere), in cui puoi passare i tuoi dati per salvare l'ultimo amico e recuperarlo. In questo modo hai un punto in cui è stata eseguita tutta la gestione della sessione.

    
risposta data 28.04.2013 - 10:32
fonte
1

La memorizzazione dei dati dovrebbe essere effettuata nel modello:

Il modo in cui i dati sono memorizzati non è importante per il controller, quindi dovrebbe essere gestito nel modello. Quindi, quando cambi lo spazio di archiviazione da una sessione a un database per qualsiasi motivo, dovrai solo cambiare il modello.

    
risposta data 29.04.2013 - 01:46
fonte

Leggi altre domande sui tag