2012-03-18 8 views
19

両者の違いは何ですか?私は彼らが同じだと思ったが、今日彼らはそうではないことに気づいた。剃刀の()(かっこ)と{}(中括弧)の相違点

これが正しい

@(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"} 

答えて

24

括弧だけの明示的な表現であり、そしてあなたはセミコロンを必要としないことがわかります。角かっこはコードブロックで、他のコードと同様に使用できます。式はHTMLの一部として出力されますが、コードブロックは出力されません。 (または<%:%>)

フィル・ハークは実際にあなたがWebフォームに精通している場合、それは<% =%>の間の差に非常に似ていますgood primer on some Razor syntax

5

を書き、<%%>。前者は評価されてページに出力され、後者は必要な処理を行うコードブロックです(ページには書き込まれません)。

4

ベティとジャスティンの言葉に加えて、「なぜ2番目のものは有効ではないのですか?」という質問には、あなたが示すものに特有の問題があります。中括弧の中には、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";} 
関連する問題