我刚开始使用Razor而不是WebForms-ViewEngine。现在在我的Razor-View中我有这样的东西:
@{
int i = 42;
string text;
if (i == 42)
{
text = "i is 42!";
}
else //i is not 42 //<- Error here
{
text = "i is something else";
}
}
我收到警告,并在运行时在else行中出现异常:
预期为“{”但找到“/”。块语句必须用“{”和“}”括起来。您不能在CSHTML页面中使用单语句控制流语句。
显然编译器不喜欢else和{之间的注释。我也尝试用@ *和/ *进行评论,它给出了类似的错误消息。
有没有像我想要的那样在剃须刀上发表评论?
是的我知道我可以像这样修理它:
@{
int i = 42;
string text;
if (i == 42)
{
text = "i is 42!";
}
else
{ //i is not 42
text = "i is something else";
}
}
然而,它不符合我们的编码指南,并且对同一行的评论使我的意图更加明确。
答案 0 :(得分:12)
这就是Razor解析器的构建方式。如果您不喜欢它的方式,您可以随时在MS连接上提交错误/功能请求,并希望人们会投票支持它,它将在未来版本的解析器中修复/实现。我个人不会因为我不在乎(见下面原因)。
这就是说,为什么要关心?我的意思是你不应该在Razor页面中编写代码。 Razor页面旨在用作视图。在ASP.NET MVC中,视图用于显示视图模型中从控制器操作传递给它的一些信息。标记主要,与HTML帮助器混合并显示视图模型中的信息。但是C#代码是不行的。所以你所谓的代码以及你在问题中显示的内容在Razor视图中严格无关。