2012-03-18 97 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的一部分提交,而代碼塊則不會。

菲爾哈克居然寫了good primer on some Razor syntax

5

如果你熟悉的WebForms,它非常類似於<%之間=%>的差異(或<%:%>)和<%%>。前者被評估,然後輸出到頁面,後者是一塊代碼,可以做任何需要的東西(但不寫入頁面)。

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";} 
相關問題