2016-03-04 50 views
0

我想在調用IactionResult類中的asp.net mvc 6中使用會話。如何使用會話和來自類asp.net mvc的呼叫6

我有類爲 「SessionTool如下」

SessionTool類:

public class SessionTool 
{ 
     private readonly IHttpContextAccessor HttpContextAccessor; 

     public SessionTool(IHttpContextAccessor httpContextAccessor) 
     { 
      HttpContextAccessor = httpContextAccessor; 
     } 

     public void SetSession(string key, string value) 
     { 
      HttpContextAccessor.HttpContext.Session.SetString(key, value); 
     } 

     public string GetSession(string key) 
     { 
      return HttpContextAccessor.HttpContext.Session.GetString(key); 
     } 
} 

我有如下HomeController的

public class HomeController : Controller 
{ 

     [HttpGet] 
     public IActionResult Login() 
     { 


     SessionTool sessionTool = new SessionTool(IHttpContextAccessor); 


     } 
} 

問:

如果我嘗試調用SessionTools類,如下IHttpContextAccessor顯示警告作爲IHttpContextAccessor是一種類型,這是不是在給定的範圍內有效。

SessionTool sessionTool = new SessionTool(IHttpContextAccessor); 

我在asp.net mvc的6個新的,我不知道我怎麼能IHttpContextAccessor的新實例設置爲使用會話班會議工具?

任何幫助將不勝感激。 謝謝

回答

1

我使用靜態類爲我的會話助手類。在那個輔助類中,我有靜態屬性,它使用特定鍵從會話中返回數據。 這是我的會話結構的一個例子。

public static class TaskManSession 
{ 
    public static int SelectedProjectId 
    { 
     get 
     { 
      if (System.Web.HttpContext.Current.Session["ProjectId"] ==null) 
       { 
       return 0; 
       } 
      return Convert.ToInt32(System.Web.HttpContext.Current.Session["ProjectId"]); 
     } 
     set 
     { 
      System.Web.HttpContext.Current.Session["ProjectId"] = value; 
     } 
    } 
} 

人們不喜歡使用靜態類,因爲它很難與靜態類一起使用TDD(測試驅動開發)。你可以從here得知更多

但是「System.Web.HttpContext.Current.Session」類也沒有實例。因此我沒有看到任何問題使用靜態助手。