在另一个类 ASP.Net MVC 控制器中设置会话
本文关键字:控制器 设置 会话 MVC Net 另一个 ASP | 更新日期: 2023-09-27 18:31:16
我正在尝试从另一个控制器访问我的MVC HomeController的方法,以便在用户未通过身份验证时将用户重定向到主页。问题是,如果我自己实例化它,则不会设置家庭控制器中的会话,但我必须从我的家庭控制器访问存储在会话中的变量。我试图以这种方式解决问题:
HomeController currentHomeController = new HomeController();
currentHomeController.Session = this.Session;
return currentHomeController.Index();
但是会话变量没有设置器,所以这不起作用。有没有不同的方法可以做到这一点?
我的解决方案
这有效:
return RedirectToAction("Index", "Home");
感谢您的回答!
您可以通过
Http.Context.Current
访问Session
在您的其他课程中:
var myVar = HttpContext.Current.Session["MyVar"]
如果您需要重定向到另一个操作,只需在您的帐户中RedirectToAction
return RedirectToAction("MyAction", "MyController")
要重定向到另一个控制器操作,您不要从中创建实例。您使用自
TempData["Key"]="lol";
or
Session["key"]="lol";
return RedirectToAction("ActionName", "ControllerName");
对于会话,您可以将您的数据存储在 TemData["key"] 或会话 ["key"] 中,并获取您的另一个操作,例如
var data=TempData["Key"];
Or
var data =Session["key"];
控制器的 Session 对象由框架预填充。它们都指向同一个 Session 对象,因此您无需设置即可使用它
在控制器 1 中
this.Session["MyText"] = "hello from Controller1";
然后在控制器 2 中
model.MyText = this.Session["MyText"] as string;
这是在请求之间传递数据的典型方式