it-swarm.it

Implementazione di un'istruzione switch in una pagina CSHTML

Sto cercando di fare qualcosa di diverso. Ho una vista che contiene un ID. In base al valore dell'ID, desidero modificare la mia intestazione visualizzata. Qualcosa di simile a:

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

Ho un sacco di condizioni del caso, quindi penso che l'uso del caso sarebbe meglio. Qualcuno può suggerire come posso farlo e farlo funzionare? Ricevo molti errori di sintassi, quindi penso che forse non sia stato codificato bene.

51
Marianne

Lo switch deve essere completamente racchiuso in un blocco e deve essere "rotto" correttamente:

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

Poiché i tag <h1> Sono racchiusi da soli in blocchi HTML, potrebbe non essere necessario i blocchi <text> Per la separazione. È solo mia abitudine includerli.

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

Non è necessario racchiudere l'intera istruzione switch in un @{} block, (a differenza del post di Joel Etherton)

I tuoi errori sono sostanzialmente errori di sintassi regolari e non hanno nulla a che fare con il rasoio;

  1. la variabile non era tra parentesi

  2. il corpo dell'interruttore non era tra parentesi

  3. nessuna "pausa" dopo la prima affermazione.

44
yoel halb

Questo non risponde alla tua domanda, come indicato dal titolo della domanda, ma risolve il problema che hai descritto nel corpo della domanda.

Utilizzare una classe del modello di vista come modello della vista e aggiungere un metodo che includa l'istruzione switch. Quindi chiama semplicemente il metodo dalla vista tramite @Model.MethodWithSwitchStatement(). [Il id può essere salvato nell'oggetto modello vista.]

2
Kenny Evitt