他们俩之间有什么区别。我以为他们是一样的,但今天我意识到他们不是。
为什么这是正确的
@(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"}
答案 0 :(得分:25)
paren只是一个明确的表达,你会注意到你不需要分号。括号是一个代码块,可以像任何其他代码一样使用。表达式将其输出作为HTML的一部分提交,而代码块则不提供。
Phil Haack实际上写了good primer on some Razor syntax答案 1 :(得分:6)
如果您熟悉WebForms,则与<%= %>
(或<%: %>
)和<% %>
之间的区别非常相似。前者被评估然后输出到页面,后者是一个代码块,可以做任何需要的事情(但不写入页面)。
答案 2 :(得分:4)
对于问题:“为什么第二个无效?”,除了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";}