Реализация инструкции switch на странице CSHTML
Я пытаюсь сделать что-то другое. У меня есть представление, содержащее Id. Основываясь на значении Id, я хочу изменить свой заголовок, который появляется. Что-то вроде:
@{ switch id
case "test": @;<h1>Test Site</h1>
case "prod": @:<h1>Prod Site</h1>
break;
}
У меня довольно много условий, поэтому, хотя использование дела было бы лучше. Может ли кто-нибудь предложить, как я могу это сделать и заставить его работать? Я получаю много синтаксических ошибок, поэтому я думаю, что, возможно, он не хорошо кодируется.
Ответы
Ответ 1
Ваш коммутатор должен быть полностью заключен в блок, и его необходимо "сломать" правильно:
// 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>
заключены в собственные блоки html, вам может не понадобиться блоки <text>
для разделения. Это просто моя привычка включать их.
Ответ 2
@switch (id)
{
case "test": <h1>Test Site</h1>
break;
case "prod": <h1>Prod Site</h1>
break;
}
Нет необходимости заключать весь оператор switch в блок @{}
(в отличие от поста Joel Etherton)
Ваши ошибки в основном являются регулярными синтаксическими ошибками и не имеют ничего общего с бритвой;
-
переменная не была в скобках
-
тело переключателя не было в скобках
-
no "break" после первого утверждения.
Ответ 3
Это не отвечает на ваш вопрос, как указано в названии вопроса, но он решает проблему, описанную вами в теле вопроса.
Используйте класс модели представления в качестве модели представления и добавьте метод, который включает оператор switch
. Затем просто вызовите метод из представления через @Model.MethodWithSwitchStatement()
. [id
можно сохранить в объекте модели просмотра.]
Ответ 4
@{
String txt;
switch (id) {
case "test":
txt = "Test";
break;
case "prod":
txt = "Prod";
break;
default:
txt = "WTF";
}
}
<h1>@txt Site</h1>
Самый лаконичный: менее избыточный или повторяющийся код и разметка.