我想用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