0

我正在尝试访问 MVC razor 视图中的会话变量,会话变量的类型为 User ,它具有属性 UserID,代码如下所示:

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

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

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

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

谢谢。

4

1 回答 1

1

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

以下将起作用:

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

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

于 2013-01-17T20:38:37.193 回答