Asp.net mvc 如何从会话中检索会话变量?
我想在控制器中创建会话,如下所示:Asp.net mvc 如何从会话中检索会话变量?,asp.net-mvc,session,Asp.net Mvc,Session,我想在控制器中创建会话,如下所示: Session["UserName"] = username 在我的另一个控制器中,我希望检索此名称,但当我写入: string username = (string)Session["UserName"] 它是“空的” 为什么会这样? 编辑 为什么有时我可以检索会话[“UserName”],有时这个变量不存在。发生了什么事?您正在使用HttpSessionStateBase控制器会话吗 尝试使用System.Web.HttpContext.Current
Session["UserName"] = username
在我的另一个控制器中,我希望检索此名称,但当我写入:
string username = (string)Session["UserName"]
它是“空的”
为什么会这样?
编辑
为什么有时我可以检索会话[“UserName”],有时这个变量不存在。发生了什么事?您正在使用HttpSessionStateBase控制器会话吗 尝试使用
System.Web.HttpContext.Current.Session[“UserName”]
进一步检查配置中的
希望这有帮助。请粘贴一些更相关的代码。这两种操作方法将更好地满足。。。在登录方法中,在会话[“Username”]处放置断点。。。。行并查看model.UserName是什么。。。看起来像是绑定问题您确定
per[0]==“true”
并且您确实输入了将值存储在会话中的if
条件吗?@DarinDimitrov是的,这是我的第二个猜测
[HttpPost]
public ActionResult Login(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
string[] per = MvcA.Controllers.RuleUsers.ValidateUserAndRole(model.UserName, model.Password);
if (per[0]=="true")
{
Session["Role"]=per[1];
Session["UserName"] = model.UserName;
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Wrong");
}
}
return View(model);
}
public ActionResult Add(SellsLiveAdd Per)
{
string ses = (string)(Session["UserName"]);
.....