2011-09-08 14 views
41

Próbuję zrobić coś innego. Mam widok, który zawiera identyfikator. Na podstawie wartości Id chcę zmienić wyświetlany nagłówek. Coś w rodzaju:Implementacja instrukcji zmiany na stronie CSHTML

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

Mam dość wiele przypadków, więc najlepiej wykorzystam przypadek. Czy ktoś może zasugerować, w jaki sposób mogę to zrobić i sprawić, by działał? Dostaję wiele błędów składniowych, więc myślę, że może nie jest dobrze zakodowany.

Odpowiedz

103

przełącznika musi być całkowicie zamknięty w bloku i musi być „złamany” odpowiednio:

// 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;     
    } 
} 

Ponieważ <h1> znaczniki są zawarte bloki html przez siebie, może nie trzeba się <text> bloki separacja. Moim zwyczajem jest je uwzględnić.

+10

Nie ma potrzeby dołączania całego oświadczenia przełącznika do bloku @ {}. –

+1

Możesz także pozbyć się ''. Nie jest to konieczne, jeśli używasz tagów HTML. Zobacz odpowiedź od @yoelhalb poniżej. – mattruma

+0

Możesz także użyć operatora @: – bicbmx

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

Nie ma potrzeby, aby ująć całą instrukcję switch w @{} bloku (w przeciwieństwie do postu Joel Etherton'S)

Twoje błędy są w zasadzie regularne błędy składniowe i nie mają nic wspólnego z brzytwą;

  1. zmienna nie był w nawiasie

  2. korpus przełącznika nie było w nawiasach

  3. nie „break” po pierwszym komunikacie.

2

To nie jest odpowiedź na pytanie, jak wskazuje tytuł pytanie, ale to nie rozwiązuje problemu opisałeś w treści pytania.

Użyj modelu widoku modelu jako modelu widoku i dodaj metodę, która zawiera instrukcję switch. Następnie po prostu wywołaj metodę z widoku poprzez @Model.MethodWithSwitchStatement(). [id można zapisać w obiekcie modelu widoku.]

+0

TO jest właściwy sposób rozwiązania problemu opisanego w OP – simoneL

Powiązane problemy