【问题标题】:Difference between ( ) (parenthesis) and { } (curly brackets) in RazorRazor 中 ( )(括号)和 { }(大括号)之间的区别
【发布时间】:2012-03-18 05:04:36
【问题描述】:

两者有什么区别。我以为它们是一样的,但今天我意识到它们不是。

为什么这是正确的

@(Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer")

这不是:

@{Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer"}

【问题讨论】:

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


    【解决方案1】:

    括号只是一个显式表达式,您会注意到不需要分号。括号是一个代码块,可以像任何其他代码一样使用。表达式将其输出作为 HTML 的一部分提交,而代码块则没有。

    Phil Haack 实际上写了一个good primer on some Razor syntax

    【讨论】:

      【解决方案2】:

      对于这个问题:“为什么第二个无效?”,除了 Betty 和 Justin 所说的,您所展示的特定问题:在花括号内,您需要您的代码遵循 c# 的正常语法,所以你不能只有一个松散的“a==b?c:d”,而不将结果分配给某些东西。你需要一个分号。所以你可以说

      @{string message = Model.WillAttend == true ? 
           "This will be an exciting party with you" : 
           "So sorry. You'll lose the beeer";}
      

      【讨论】:

        【解决方案3】:

        如果您熟悉 WebForms,这与<%= %>(或<%: %>)和<% %> 之间的区别非常相似。前者被评估然后输出到页面,后者是一个可以做任何它需要的代码块(但不写入页面)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-22
          • 2022-11-19
          • 2010-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多