asp.net-mvc - 在 MVC 6 Controller 中创建 session (使用 View ,使用 Entity Framework )

标签 asp.net-mvc entity-framework linq

我正在尝试在我的 UserAccountsController 中创建一个 session

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;
                }
            }
        }

    }
}

我得到一个错误提示

the name Session does not exist in the current context.

我需要做这部分来完成一个mvc的注册登录教程

最佳答案

Session 属性在 MVC 6 的 Controller 类中不存在,而是使用 HttpContext.Session 访问 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);

关于asp.net-mvc - 在 MVC 6 Controller 中创建 session (使用 View ,使用 Entity Framework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35735476/

相关文章:

c# - 在模型的嵌套属性上使用 DisplayFor

asp.net-mvc - 了解 MVC 模型

c# - asp.net mvc 中的多个文件上传

.net - 如何修复 System.Data.Edm.EdmEntityType 没有键

entity-framework - Entity Framework Core 2.0 - 逐步运行迁移

c# - 默认情况下,LINQ 和 Entity Framework 加载的渴望程度如何?

asp.net - 如果关键服务不可用,如何使 ASP.NET 站点脱机

c# - Entity Framework 控制台应用程序连接到错误的数据库

c# - 使用嵌套 for 循环将 Lambda 转换为 Linq 语句

c# - 用 Max(F(X)) 选择 X