else和{之间的评论

时间:2012-01-05 09:35:29

标签: asp.net .net asp.net-mvc asp.net-mvc-3 razor

我刚开始使用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";
  }
}

然而,它不符合我们的编码指南,并且对同一行的评论使我的意图更加明确。

1 个答案:

答案 0 :(得分:12)

这就是Razor解析器的构建方式。如果您不喜欢它的方式,您可以随时在MS连接上提交错误/功能请求,并希望人们会投票支持它,它将在未来版本的解析器中修复/实现。我个人不会因为我不在乎(见下面原因)。

这就是说,为什么要关心?我的意思是你不应该在Razor页面中编写代码。 Razor页面旨在用作视图。在ASP.NET MVC中,视图用于显示视图模型中从控制器操作传递给它的一些信息。标记主要,与HTML帮助器混合并显示视图模型中的信息。但是C#代码是不行的。所以你所谓的代码以及你在问题中显示的内容在Razor视图中严格无关。