【发布时间】:2016-09-21 12:46:06
【问题描述】:
我想使用 Razor 在屏幕上打印一个变量。我在HttpContext中保存了一个名为CustomPrincipal的类,保存正确。
我希望它像下面的示例一样放在一行上,但不幸的是它不起作用:
@* This is not working... *@
@(CustomPrincipal)Context.Items["IUser"].Name
下面的例子虽然可以工作,所以它正确地保存到了 HttpContext。
@{ CustomPrincipal user = (CustomPrincipal)Context.Items["IUser"]; }
@user.Name
有谁知道为什么第一个例子不起作用,你能告诉我一个解决方案吗?
错误是:
编译器错误消息:CS0118:“CustomPrincipal”是“类型”,但用作“变量”
【问题讨论】:
-
“不工作”是什么意思?你有错误信息吗?什么都没有显示?
-
阅读How to Ask,详细说明“不工作”并分享您的研究。这是一个括号问题,您不能将字符串
Name转换为CustomPrincipal。 -
您可能只需要将
CustomPrincipal对象包装在括号中,否则它将尝试将整行转换为该类型:@(((CustomPrincipal)Context.Items["IUser"]).Name) -
@DavidG 一组括号。
@(...)格式将仅打印...,以便您可以预先添加和附加可能看起来像 C# 代码的文本。 -
谢谢!这成功了:“@(((CustomPrincipal)Context.Items["IUser"]).Name)”。忘记了最后一组括号。
标签: c# asp.net-mvc razor umbraco umbraco7