使用Razor (c#)在屏幕上打印一个变量



我想用Razor在屏幕上打印一个变量。我有一个名为CustomPrincipal的类保存在HttpContext中,它被正确保存。

我想把它放在一行,就像下面的例子一样,不幸的是这不起作用:

@* This is not working... *@
@(CustomPrincipal)Context.Items["IUser"].Name

下面的例子是工作的,所以它正确地保存到HttpContext。

@{ CustomPrincipal user = (CustomPrincipal)Context.Items["IUser"]; }
@user.Name

有谁知道为什么第一个例子不工作,你能给我一个解决方案吗?

错误是:

编译错误消息:CS0118: 'CustomPrincipal'是一个'类型',但像'变量'一样使用

感谢评论中提到的@DavidG和@CodeCaster。

@(((CustomPrincipal)Context.Items["IUser"]).Name)

括号是必需的,否则Object类型上没有Name属性,这就是Context.Items["IUser"]。我们必须添加括号将Object转换为CustomPrincipal,然后访问该类型的Name属性。

同样问题的另一个例子:https://stackoverflow.com/a/4151988/4585226

相关内容

  • 没有找到相关文章

最新更新