从MVC razor视图访问会话变量给出变量类型而不是值

时间:2013-01-17 15:48:02

标签: asp.net-mvc session razor

我正在尝试访问MVC剃刀视图中的会话变量,会话变量的类型为User,其中包含属性UserID,代码如下:

<h3>@((User)Session["LoggedOnUser"]).UserID</h3>

它只打印属性的完全限定类型而不是其值。我也尝试了以下内容:

@{User loginUser = (User)Session["LoggedOnUser"];}
<h3>@loginUser.UserID</h3>

这次有效。谁能告诉我这两者有什么区别以及为什么第一个不起作用?

感谢。

1 个答案:

答案 0 :(得分:1)

这是因为您为Response.Write(@)代码块放置了近括号。您在User对象上调用Response.Write而不是UserID属性。我相信在用户ojbect上调用Response.Write只会使用ToString()方法并返回完全限定的类型名称。

以下内容有效:

@((User)Session["LoggedOnUser"].UserID)

请注意,close括号位于属性之后,而不是在会话字典的返回值之后。