ASP.net MVC会话通过Razor视图访问

时间:2017-05-16 18:38:51

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

所以这里是另一个来自菜鸟的MVC问题:

这是我的控制器索引代码:

public ActionResult Index()
    {
        HELPer.sessionVars sVars = new HELPer.sessionVars
        {
            UnboundFY = "0",
            UnboundCat = "0",
            UnboundFYbetween = "",
            UnboundCHelp = "",
            UnboundN = "",
            UnboundStrUser = "",
            UnboundForm = "",
            UnboundPer = "",
            strID = "",
            UnboundStrUserDataWHERE = "",
            UnboundNClass = "",
            UnboundstrSQL = "",
            strUser = "",
            strTname = "",
            theType = "",
            userCategory = "",
            AdminMode = false,
            AddPresenter = false,
            Mylasses = false,
            Newnt = false,
            Beduled = false,
            EvalMode = false,
            cat = false,
            SCHEDULE = false,
            Travelicy = false
        };

        Session["sessionVars"] = sVars;

        return getMainData();
    }

这是我的模型,上面的代码正在调用:

namespace ETTData.Models
{
    public class HELPer
    {
        public class sessionVars
        {
            public string UnboundFY { get; set; }
            public string UnboundCat { get; set; }
            public string UnboundFYbetween { get; set; }
            public string UnboundCHelp { get; set; }
            public string UnboundN { get; set; }
            public string UnboundStrUser { get; set; }
            public string UnboundForm { get; set; }
            public string UnboundPer { get; set; }
            public string strID { get; set; }
            public string UnboundStrUserDataWHERE { get; set; }
            public string UnboundNClass { get; set; }
            public string UnboundstrSQL { get; set; }
            public string strUser { get; set; }
            public string strTname { get; set; }
            public string theType { get; set; }
            public string userCategory { get; set; }
            public bool AdminMode { get; set; }
            public bool AddPresenter { get; set; }
            public bool Mylasses { get; set; }
            public bool Newt { get; set; }
            public bool Beduled { get; set; }
            public bool EvalMode { get; set; }
            public bool cat { get; set; }
            public bool SCHEDULE { get; set; }
            public bool Travelicy { get; set; }
        }
    }
}

因此,一旦加载了视图,我检查以确保sessionVars具有值,并且确实如此。

现在这一切都很棒,但我真正需要做的是从Razor视图页面中访问其中一个对象值

作为一个例子,我尝试了以下内容:

 @Session["sessionVars"].AdminMode;

 @model ETTData.Models.HELPer.sessionVars; 

 @Session["sessionVars"].AdminMode.toString();

 @Session["sessionVars"]["AdminMode"];

 @Session["sessionVars"].toString();

 System.Web.HttpContext.Current.Session["sessionVars"] = sVars; //(in controller)
 @Session["sessionVars"].AdminMode; //In Razor View page

上述所有示例因某种原因失败。

那么我做错了什么?

更新1

enter image description here

3 个答案:

答案 0 :(得分:0)

您需要将@Session [" sessionVars"]投射到HELPer.sessionVars:

(HELPer.sessionVars)会话[" sessionVars"]

然后,您可以访问这些属性。

答案 1 :(得分:0)

所以我找到了它:

我必须在Razor页面上执行以下操作:

 @{ ETTData.Models.HELPer.sessionVars sVars = (ETTData.Models.HELPer.sessionVars)HttpContext.Current.Session["sessionVars"]; }

然后我可以使用:

 @user.AdminMode;

答案 2 :(得分:0)

首先,你不再需要......

Session["sessionVars"] = sVars

接下来,您的控制器需要将视图模型传递给视图。

return View(sVars);

接下来在剃须刀中,您需要指定视图模型的类型......

@model ETTData.Models.HELPer

最后要在Razor中的某个标记中放置一个值,你会做这样的事情......

<p>Unbound Cat:</p> <b>@model.UnboundCat</b>