I\'m trying to do something different. I have a view that contains an Id. Based on the value of the Id I want to change my heading that appears. Something like:
This doesn't answer your question, as indicated by the question's title, but it does solve the problem you described in the body of the question.
Use a view model class as the view's model and add a method that includes the switch
statement. Then just call the method from the view via @Model.MethodWithSwitchStatement()
. [The id
can be saved in the view model object.]
Your switch needs to be completely enclosed in a block and it needs to be "broken" properly:
// 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;
}
}
Because the <h1>
tags are enclosed html blocks by themselves, you may not need the <text>
blocks for separation. It's just my habit to include them.
@{
String txt;
switch (id) {
case "test":
txt = "Test";
break;
case "prod":
txt = "Prod";
break;
default:
txt = "WTF";
}
}
<h1>@txt Site</h1>
The Most Concise: Less redundant or repetitive code and markup.
@switch (id)
{
case "test": <h1>Test Site</h1>
break;
case "prod": <h1>Prod Site</h1>
break;
}
There is no need to enclose the entire switch statement in a @{}
block, (unlike Joel Etherton's post)
Your errors are basically regular syntax errors and have nothing to do with razor;
the variable wasn't in parenthesis
the body of switch wasn't in brackets
no "break" after the first statement.