комментарий между else и { - PullRequest
       19

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

11 голосов
/ 05 января 2012

Я только начал использовать 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";
  }
}

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

1 Ответ

12 голосов
/ 05 января 2012

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

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

...