2010-11-25 58 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"); 

如果它可能是更有趣的一点是你的通用的getter但仍不是类型安全的,因为您正在使用此方法进行投射,这也可能是在控制器操作中完成的。因此,总而言之,我不会说这是一种不好的做法,但我没有看到这样的类的任何好处,它也使得您的代码不易被其他需要了解这是扩展方法的开发人员阅读,它只是使用会话的场景。