Как Razor различает использование знака @? - PullRequest
0 голосов
/ 18 мая 2018

Учитывая два примера содержимого Razor:

<div>@emailAddress</div>

И

<div>cbehrens@emailAddress.com</div>

Я ожидал бы, что первый будет выводить значение переменной, называемой адресом электронной почты, а второйнапечатал бы буквальный текст "cbehrens@emailAddress.com".

Как Razor различает эти два использования знака @?

1 Ответ

0 голосов
/ 21 мая 2018

Razor запускается в режиме HTML до тех пор, пока не увидит первый символ @, затем

  • обрабатывает все, что следует за этим, как выражение C #
  • , когда анализатор Razor обнаруживает конецвыражение, он переключается обратно на HTML

Таким образом, подчеркнутые части будут рассматриваться как исходный код C #:

<div>@emailAddress</div>
      ============             

<div>cbehrens@emailAddress.com</div>
              ================  

Это не всегда то, что вы хотите ... emailAddress вероятно, не имеет свойства с именем com.

Чтобы исправить это, заключите ваше выражение C # в квадратные скобки:

<div>cbehrens@(emailAddress).com</div>
              ==============

Закрывающая скобка указывает «конец выражения» ианализатор возвращается в режим HTML.

Если вы действительно хотите вывести символ @, используйте вместо него @@:

<div>cbehrens@@emailAddress.com</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...