我想在我的控制器中访问一个Session变量,但我不能。 ActionResult方法中的变量正常工作,但第一个不起作用。 我想声明为私有变量因为我将在所有actionresults中使用
这是我的代码
public class MyController : Controller
{
private Roles rol = Session["rol"] as Roles;
// GET:
public ActionResult Index()
{
Roles rol = Session["rol"] as Roles;
我编辑主题,因为我无法添加新问题。
致力于ActionResult方法。
这是我得到的错误:error 我尝试添加新的用法,尝试使用httpContext和其他东西,但我没有做好。
忘记角色。 我的问题是(在下一个代码中):为什么c2变量工作正常,从我的会话中获取数据而c1不起作用?
public class MyController : Controller
{
private Clients c1 = Session["client"] as Clients;
// GET:
public ActionResult Index()
{
Clients c2 = Session["client"] as Clients;
答案 0 :(得分:0)
看起来像.NET MVC。应用程序启动时,没有会话变量。所以这一行:
private Roles rol = Session["rol"] as Roles;
无法正常工作
只要用户访问您的站点(和您的ActionResult),就可以为他创建会话变量。您可以将用户角色存储在会话变量中,并在特定用户的所有ActionResult函数中使用它
public ActionResult Index()
{
Session["rol"] = Roles.GetRolesForUser();
....
也许告诉您要实现的目标,以便我们提供更多帮助
编辑:
这一行
private Clients c1 = Session["client"] as Clients;
无法工作,因为它将在首次使用控制器时运行。您根本无法在控制器的初始化中使用会话变量。会话变量仅在用户创建后才存在,这可以在操作结果中完成。会话变量与用户绑定。
您是否可能想要使用简单的全局变量而不是会话?
public class MyController : Controller
{
private static List<Client> c1 = new List<Client>();
// GET:
public ActionResult Index()
{
....
// you can access c1 here, change it, etc
c1.Add(client);
....
简短回答:您正在尝试使用尚未创建的变量