【问题标题】:Access session variable from MVC razor view gives variable type instead of value从 MVC razor 视图访问会话变量提供变量类型而不是值
【发布时间】:2013-01-01 05:05:34
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

  • 您能分享一下您是如何在特定用户域上应用会话的吗?我只是在用户控制器中添加会话声明吗?

标签: asp.net-mvc session razor


【解决方案1】:

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

以下方法会起作用:

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

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

【讨论】:

  • 这是有道理的。我将其更改如下,它可以工作:@(((User)Session["LoggedOnUser"]).UserID)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2023-03-09
  • 2011-12-29
相关资源
最近更新 更多