2012-03-18 44 views
19

Sự khác nhau giữa chúng là gì. Tôi nghĩ họ giống nhau nhưng hôm nay tôi nhận ra rằng họ không như vậy.Sự khác biệt giữa() (dấu ngoặc đơn) và {} (dấu ngoặc nhọn) trong Razor

Tại sao điều này là đúng

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

và đây không phải là:

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

Trả lời

24

Các Dấu ngoặc đơn chỉ là một biểu hiện rõ ràng, và bạn sẽ nhận thấy rằng bạn không cần một dấu chấm phẩy. Các dấu ngoặc là một khối mã, được sử dụng giống như bất kỳ đoạn mã nào khác. Biểu thức có đầu ra của họ được gửi như là một phần của HTML, trong khi các khối mã thì không.

Phil Haack thực sự đã viết một good primer on some Razor syntax

5

Nếu bạn đã quen thuộc với WebForms, nó rất giống với sự khác biệt giữa <% =%> (hoặc <%:%>) và <%%>. Sau đó được đánh giá sau đó xuất ra trang, sau này là một khối mã có thể làm bất cứ điều gì nó cần (nhưng không được viết vào trang).

4

Đối với câu hỏi: "tại sao thứ hai không hợp lệ?", Ngoài những gì Betty và Justin nói, các vấn đề cụ thể với nội dung bạn hiển thị: bên trong dấu ngoặc nhọn, bạn cần mã của mình để thực hiện theo cú pháp thông thường của C# , vì vậy bạn không thể có một "a == b? c: d" lỏng lẻo, mà không gán kết quả cho một thứ gì đó. Và bạn cần dấu chấm phẩy. Vì vậy, bạn có thể nói

@{string message = Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer";} 
Các vấn đề liên quan