2010-11-25 73 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但仍不是類型安全的,因爲您正在使用此方法進行投射,這也可能是在控制器操作中完成的。因此,總而言之,我不會說這是一種不好的做法,但我沒有看到這樣的類的任何好處,它也使得您的代碼不易被其他需要了解這是擴展方法的開發人員閱讀,它只是使用會話的場景。