2010-11-25 5 views
2

- это плохая практика?ASP.NET MVC Session

using System.Web.Mvc; 

namespace WebInventaris.Utils.Session 
{ 
    public static class SessionControllerExtensions 
    { 
     public static void SetSessionVar<T>(this Controller controller, string field, T value) 
     { 
      controller.Session[field] = value; 
     } 

     public static T GetSessionVar<T>(this Controller controller, string field) 
     { 
      return (T) controller.Session[field]; 
     } 
    } 
} 

Я пытаюсь отделить сеанс от своих контроллеров, но я не очень хорошо разбираюсь в этих методах.

ответ

5

Нет ничего плохого в использовании сеанса непосредственно с контроллеров (это одна из причин, по которым он был раскрыт как свойство класса Controller). И я не вид видеть выгоду замены:

Session["foo"] = "bar"; 

с помощью вызова метода расширения:

this.SetSessionVar("foo", "bar"); 

Где это возможно, немного более интересным является ваш общий добытчик, но все-таки это не является безопасным по типу, поскольку вы выполняете внутри этого метода, что также можно было бы сделать в действии контроллера. Поэтому я бы не сказал, что это плохая практика, но я не вижу никакой пользы от такого класса, а также делает ваш код менее удобочитаемым другими разработчиками, которые должны понимать, что это метод расширения и который сцены он просто использует сеанс.