我正在尝试访问MVC剃刀视图中的会话变量,会话变量的类型为User,其中包含属性UserID,代码如下:
<h3>@((User)Session["LoggedOnUser"]).UserID</h3>
它只打印属性的完全限定类型而不是其值。我也尝试了以下内容:
@{User loginUser = (User)Session["LoggedOnUser"];}
<h3>@loginUser.UserID</h3>
这次有效。谁能告诉我这两者有什么区别以及为什么第一个不起作用?
感谢。
答案 0 :(得分:1)
这是因为您为Response.Write
(@)代码块放置了近括号。您在User对象上调用Response.Write而不是UserID属性。我相信在用户ojbect上调用Response.Write只会使用ToString()方法并返回完全限定的类型名称。
以下内容有效:
@((User)Session["LoggedOnUser"].UserID)
请注意,close括号位于属性之后,而不是在会话字典的返回值之后。