所以这里是另一个来自菜鸟的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
答案 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>