2011-09-08 36 views
41

Tôi đang cố gắng làm điều gì đó khác biệt. Tôi có một cái nhìn có chứa một Id. Dựa trên giá trị của Id, tôi muốn thay đổi tiêu đề của mình xuất hiện. Một cái gì đó như:Thực hiện câu lệnh chuyển đổi trong trang CSHTML

@{ switch id 
    case "test": @;<h1>Test Site</h1> 
    case "prod": @:<h1>Prod Site</h1> 
    break; 
} 

Tôi có khá nhiều trường hợp điều kiện nên tôi sử dụng trường hợp sẽ là tốt nhất. Bất cứ ai có thể đề nghị làm thế nào tôi có thể làm điều này và làm cho nó hoạt động? Tôi nhận được rất nhiều lỗi cú pháp vì vậy tôi nghĩ rằng có lẽ nó không được mã hóa tốt.

Trả lời

103

chuyển đổi của bạn cần phải được hoàn toàn khép kín trong một khối và nó cần phải được "vỡ" đúng cách:

// Use the @{ } block and put all of your code in it 
@{ 
    switch(id) 
    { 
     case "test": 
      // Use the text block below to separate html elements from code 
      <text> 
       <h1>Test Site</h1> 
      </text> 
      break; // Always break each case 
     case "prod": 
      <text> 
       <h1>Prod Site</h1> 
      </text> 
      break; 
     default: 
      <text> 
       <h1>WTF Site</h1> 
      </text> 
      break;     
    } 
} 

<h1> thẻ lệnh được đóng khối html tự, bạn có thể không cần <text> khối cho tách biệt. Nó chỉ là thói quen của tôi để bao gồm chúng.

+10

Không cần phải kèm theo toàn bộ lệnh chuyển đổi trong khối @ {}. –

+1

Bạn cũng có thể loại bỏ ' '. Nó không cần thiết nếu bạn đang sử dụng thẻ html. Xem câu trả lời từ @yoelhalb bên dưới. – mattruma

+0

Bạn cũng có thể sử dụng toán tử @: ... – bicbmx

38
@switch (id) 
{ 
    case "test": <h1>Test Site</h1> 
    break; 
    case "prod": <h1>Prod Site</h1> 
    break; 
} 

Không cần phải kèm theo toàn bộ câu lệnh switch trong một khối @{}, (không giống như bài Joel Etherton của)

lỗi của bạn là lỗi cú pháp cơ bản thường xuyên và không có gì để làm với dao cạo;

  1. biến là không trong ngoặc

  2. cơ thể của công tắc là không để trong ngoặc

  3. không "phá vỡ" sau khi báo cáo kết quả đầu tiên.

2

Điều này không trả lời câu hỏi của bạn, như được chỉ ra trong tiêu đề câu hỏi, nhưng nó giải quyết được vấn đề bạn mô tả trong phần câu hỏi.

Sử dụng lớp mô hình chế độ xem làm mô hình của chế độ xem và thêm phương thức bao gồm câu lệnh switch. Sau đó, chỉ cần gọi phương thức từ chế độ xem qua @Model.MethodWithSwitchStatement(). [id có thể được lưu trong đối tượng mô hình chế độ xem.]

+0

Đó là cách đúng để giải quyết vấn đề được mô tả trong OP – simoneL

Các vấn đề liên quan