C# 在MVC5中保存用户状态

C# 在MVC5中保存用户状态,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,更新-此问题最初与会话状态无关 我试图在MVC5中更改用户状态中的一个变量 // POST: /Account/Registered [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Registered(loggedinViewModel model, ApplicationUser user, string selcteditem) { if (Mo

更新-此问题最初与会话状态无关

我试图在MVC5中更改用户状态中的一个变量

// POST: /Account/Registered
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Registered(loggedinViewModel model, ApplicationUser user, string selcteditem)
{
    if (ModelState.IsValid)
    {
        var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new UserDb()));                
        var store = new UserStore<ApplicationUser>(new UserDb());
        var currentUser = manager.FindById(User.Identity.GetUserId());

        var newCID = clubIDMethod();

        var ctx = store.Context as UserDb;

        ctx.Users.Attach(user);

        SelectedNewCID(model, newCID);

        ViewBag.newCID = (model.SelectedGodCID);

        user.CID = ViewBag.newCID;

        currentUser.CID = user.CID;                

    }
    return View(model);  
}
//POST:/Account/已注册
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
已注册的公共异步任务(loggedinViewModel模型、ApplicationUser用户、字符串selcteditem)
{
if(ModelState.IsValid)
{
var manager=newusermanager(newuserstore(newuserdb());
var store=newuserstore(newuserdb());
var currentUser=manager.FindById(User.Identity.GetUserId());
var newCID=clubIDMethod();
var ctx=store.Context作为UserDb;
ctx.Users.Attach(用户);
选择newCID(型号,newCID);
ViewBag.newCID=(model.SelectedGodCID);
user.CID=ViewBag.newCID;
currentUser.CID=user.CID;
}
返回视图(模型);
}
我真的不确定没有保存的状态是什么,
currentUser.CID
正在更新,但当我转到其他位置时,它仍然设置为原始值


请帮助,谢谢

您可以在global.aspx上添加这样的会话

    protected void Session_Start(Object sender, EventArgs e)
    {
        string temp = string.Empty;
        HttpContext.Current.Session.Add("_SessionItem", temp);
    }
然后你需要给CID分配这样的值

Session["_SessionItem"] = ViewBag.newCID;
这将在会话中保存字符串


然后,您需要在使用会话时阅读这些内容。

您没有保存更改。请参见.ctx.SaveChanges();失败,也将保存回数据库是吗?将某个内容设置为不同的内容,但不要将其保存回数据库。问题中引用的其他地方在哪里?因为您的控制器方法几乎是web请求/响应生命周期中用户代码部分的开始和结束。如何声明
currentUser
?您是否了解每个请求都会实例化一个新的控制器?你听说过会话吗?currentUser是为数据库获取的,然后设置在identityModels.cs中,这是我第一次需要更新它,是的,我知道每个请求都会实例化一个新的控制器,我可以使用会话变量,但不确定如何在MVC 5中:(请帮助完善,正是我需要的,谢谢Mike