Реализация оператора switch на странице CSHTML - PullRequest
49 голосов
/ 08 сентября 2011

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

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

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

Ответы [ 3 ]

121 голосов
/ 08 сентября 2011

Ваш переключатель должен быть полностью заключен в блок, и он должен быть правильно "сломан":

// 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> для разделения. Это моя привычка включать их.

44 голосов
/ 11 сентября 2012
@switch (id)
{
    case "test": <h1>Test Site</h1>
    break;
    case "prod": <h1>Prod Site</h1>
    break;
}

Нет необходимости заключать весь оператор switch в блок @{} (в отличие от поста Джоэла Этертона)

Ваши ошибки в основном являются обычными синтаксическими ошибками и не имеют ничего общего с бритвой;

  1. переменная не была в скобках

  2. тело переключателя не было в скобках

  3. без "перерыва" после первого утверждения.

2 голосов
/ 16 января 2014

Это не отвечает на ваш вопрос, как указано в заголовке вопроса, но оно решает проблему, описанную в основной части вопроса.

Используйте класс модели представления в качестве модели представления и добавьтеметод, который включает оператор switch.Затем просто вызовите метод из представления через @Model.MethodWithSwitchStatement().[id можно сохранить в объекте модели вида.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...