2016-03-01 30 views
2

我試圖在我的UserAccountsController創建一個會話使會話(與意見,使用實體框架)

using System.Linq; 
using Microsoft.AspNet.Mvc; 
using Microsoft.AspNet.Mvc.Rendering; 
using Microsoft.Data.Entity; 
using POPPELWebsite.Models; 

namespace POPPELWebsite.Controllers 
{ 
    public class UserAccountController : Controller 
    { 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     public ActionResult Register() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Register(UserAccount account) 
     { 
      if (ModelState.IsValid) 
      { 
       using (OurDbContext db = new OurDbContext()) 
       { 
        db.userAccount.Add(account); 
        db.SaveChanges(); 
       } 

       ModelState.Clear(); 
       ViewBag.Message = account.FirstName + " " + account.LastName + " successfully registered."; 
      } 

      return View(); 
     } 

     //Login 
     public ActionResult Login() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Login(UserAccount user) 
     { 
      using (OurDbContext db = new OurDbContext()) 
      { 
       var usr = db.userAccount.Single(u => u.Email == user.Email && u.Password == user.Password); 
       if (usr != null) 
       { 
        Session["UserID"] = usr.UserID.ToString; 
       } 
      } 
     } 

    } 
} 

我得到一個錯誤說

名稱會話時不存在於當前的情況下。

我需要做的這部分完成註冊和登錄教程MVC

回答

0

Session屬性不會在MVC 6 Controller類存在,而是使用HttpContext.Session訪問會話屬性。

例:

// get values 
string strValue = HttpContext.Session.GetString("StringKey"); 
int intValue = HttpContext.Session.GetInt32("IntKey"); 
byte[] byteArrayValue = HttpContext.Session.Get("ByteArrayKey"); 

// set values 
HttpContext.Session.Set("ByteArrayKey", byteArrayValue); 
HttpContext.Session.SetInt32("IntKey", intValue); 
HttpContext.Session.SetString("StringKey", strValue); 
+1

'HttpContext.Session [ 「用戶名」] = usr.UserID.ToString;'現在說不能辦理用[]索引到類型的表達式的Isession –

+0

我我的答案更新包括訪問密鑰的方法,因爲它們不能使用索引訪問。 –