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

Комментарий между else и {

Я только начал использовать Razor вместо WebForms-ViewEngine. Теперь в моем Razor-View у меня есть что-то вроде этого:

@{
  int i = 42;
  string text;
  if (i == 42)
  {
    text = "i is 42!";
  }
  else //i is not 42 //<- Error here
  {
    text = "i is something else";
  }
}

Я получаю предупреждение, и во время выполнения он получает исключение в строке else:

Ожидаемое значение "{", но найдено "/". Заявления блока должны быть заключены в "{" и "}". Вы не можете использовать инструкции управления потоком одного оператора на страницах CSHTML.

По-видимому, компилятор не любит комментарии между else и {. Я также пробовал комментировать @* и /*, что давало похожие сообщения об ошибках.

Есть ли способ сделать комментарий в бритве, как я хочу?


Отказ от ответственности:

Да, я знаю, что могу исправить это просто так:

@{
  int i = 42;
  string text;
  if (i == 42)
  {
    text = "i is 42!";
  }
  else
  { //i is not 42
    text = "i is something else";
  }
}

Однако это не соответствует нашим правилам в отношении кодирования, и комментарий в той же строке делает мои намерения более ясными.

4b9b3361

Ответ 1

То, как построен парсер Razor. Вы всегда можете отправить запрос об ошибке/функции на MS-соединение, если вам не нравится, как он есть, и надеемся, что люди будут голосовать за него, и он будет исправлен/реализован в будущей версии синтаксического анализатора. Лично я бы не потому, что мне все равно (см. Ниже почему).

Как говорится, зачем заботиться? Я имею в виду, что вы не должны писать код на странице Razor. Страница Razor предназначена для использования в качестве представления. В ASP.NET MVC представление используется для отображения некоторой информации из модели представления, которая передается ей из действия контроллера. Разметка первичная, смешанная с HTML-помощниками и отображение информации из модели представления. Но код С# - нет. Так что вы вызываете код и то, что вы показали в своем вопросе, строго нечего делать в представлении Razor.