2014-10-22 82 views
1

更新 - 此问题最初不是关于会话状态。在MVC中保存用户状态5

我试图改变用户状态的变量MVC 5

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

我真的不确定状态不会被保存的东西,在currentUser.CID正在更新,但是当我去别的地方的仍设置为原始值

请帮助谢谢

+1

您不保存更改。请参阅http://msdn.microsoft.com/zh-CN/library/system.data.entity.dbcontext.savechanges(v = vs.113).aspx。 – 2014-10-22 09:31:50

+0

ctx.SaveChanges();失败,也会保存回数据库是的?设置一些不同的东西,但不能将其保存回db – Mich 2014-10-22 09:34:58

+0

你在问题中引用的_elsewhere_在哪里?因为您的控制器方法几乎是Web请求/响应生命周期的用户代码部分的开始和结束。 – 2014-10-22 09:38:15

回答

0

你可以global.aspx像这样的东西

加入会话

,然后你需要分配与东西CID这样

Session["_SessionItem"] = ViewBag.newCID; 

这将保持在会话的字符串。

您需要在使用会话时阅读该内容。

+0

完美,只是我需要感谢迈克 – Mich 2014-10-22 11:16:37