如何解决我在 asp.net MVC 中进行会话处理它适用于视图页面按钮我无法在控制器中的另一个操作上获取会话
我从这个控制器的数据库中获取数据,然后我将用户名存储到一个会话中,当我在登录后移动到视图页面时它可以工作。
public ActionResult shoppage(assign s)
{
if (ModelState.IsValid)
{
using (transactionEntities db = new transactionEntities())
{
var obj = db.assigns.Where(a => a.Username.Equals(s.Username) && a.Password.Equals(s.Password)).FirstOrDefault();
if (obj != null)
{
Session["Username"] = s.Username.ToString();
return View();
}
else
{
return RedirectToAction("login");
}
}
但是当我尝试在另一个操作结果中访问它时,它给了我一个空值异常
public ActionResult insertwatch()
{
if (Session["Username"] != null)
{
name = Session["Username"].ToString();
}
if (Request.Form["submit1"] != null)
{
transactionEntities dt = new transactionEntities();
itemthing it = new itemthing();
it.uname = name.ToString();
it.itemprice = "1200";
it.itemname = "lucia";
dt.itemthings.Add(it);
return RedirectToAction("shoppage");
}
else if (Request.Form["submit2"] != null)
{
transactionEntities dt = new transactionEntities();
itemthing it = new itemthing();
it.uname = name.ToString();
it.itemprice = "1800";
it.itemname = "Benson";
dt.itemthings.Add(it);
return RedirectToAction("shoppage");
}
解决方法
您可能需要添加空检查属性:-
public ActionResult shoppage(assign s)
{
if (ModelState.IsValid)
{
using (transactionEntities db = new transactionEntities())
{
var obj = db.assigns.Where(a => a.Username.Equals(s.Username) && a.Password.Equals(s.Password)).FirstOrDefault();
if (obj != null)
{
if (HttpContext.Current.Session["Username"] == null) //add this code
return string.Empty;
else
//Session["Username"] = s.Username.ToString();
HttpContext.Current.Session["Username"] = s.Username.ToString();
return View();
}
else
{
return RedirectToAction("login");
}
}
或者你可以简单地使用这行代码:-
//clarify code
if (Session["Username"]!=null)
{
Session["Username"] = s.Username.ToString();
return View();
}
//clarify code
或者你可以使用类似于设置会话的东西并获取会话的存储值:-
设置会话
string user = s.Username.ToString();
HttpContext.Session.SetString("UserToken",user);
从会话中获取存储的值:-
var token = HttpContext.Session.GetString("UserToken");
我认为它会解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。