Подтвердить что ты не робот

Реализация инструкции switch на странице CSHTML

Я пытаюсь сделать что-то другое. У меня есть представление, содержащее Id. Основываясь на значении Id, я хочу изменить свой заголовок, который появляется. Что-то вроде:

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

У меня довольно много условий, поэтому, хотя использование дела было бы лучше. Может ли кто-нибудь предложить, как я могу это сделать и заставить его работать? Я получаю много синтаксических ошибок, поэтому я думаю, что, возможно, он не хорошо кодируется.

4b9b3361

Ответ 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>

Самый лаконичный: менее избыточный или повторяющийся код и разметка.