Разница между () (круглые скобки) и {} (фигурные скобки) в Razor - PullRequest
22 голосов
/ 18 марта 2012

В чем разница между ними обоими.Я думал, что они были одинаковыми, но сегодня я понял, что это не так.

Почему это правильно

@(Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer")

, а это не так:

@{Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer"}

Ответы [ 3 ]

25 голосов
/ 18 марта 2012

Парень - это просто явное выражение, и вы заметите, что вам не нужна точка с запятой.Скобки представляют собой блок кода, который используется так же, как и любой другой фрагмент кода.Вывод выражений представлен как часть HTML, а блоки кода - нет.

Фил Хаак фактически написал хороший учебник по синтаксису Razor

6 голосов
/ 18 марта 2012

Если вы знакомы с веб-формами, это очень похоже на разницу между <%= %> (или <%: %>) и <% %>.Первый оценивается, а затем выводится на страницу, последний представляет собой блок кода, который может делать все, что ему нужно (но не записывается на страницу).

4 голосов
/ 18 марта 2012

На вопрос: «почему второй не действителен?», В дополнение к тому, что говорят Бетти и Джастин, есть проблемы, характерные для того, что вы показываете: внутри фигурных скобок ваш код должен следовать нормальному синтаксису c #таким образом, вы не можете получить просто "a == b? c: d", не присвоив результат чему-либо.И вам нужна точка с запятой.Так что вы могли бы сказать

@{string message = Model.WillAttend == true ? 
     "This will be an exciting party with you" : 
     "So sorry. You'll lose the beeer";}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...