ASP.NET MVC Razor синтаксис - PullRequest
       8

ASP.NET MVC Razor синтаксис

4 голосов
/ 16 сентября 2010

Вот что я хотел бы выразить Razor:

<b>@parameterMapping.Title</b> (Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)

Но чтобы разобрать его, я должен написать это так:

<b>@parameterMapping.Title</b> <text>(Category: </text> @parameterMapping.Category.Title <text>, Regexp:</text> @parameterMapping.Regexp <text>)</text>

Есть ли лучшие способы решить эту проблему?

1 Ответ

13 голосов
/ 16 сентября 2010

То, что вы записали:

<b>@parameterMapping.Title</b>
(Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)

Действительно действительно в Razor.Я предполагаю, что у вас есть все это в каком-то условном или итеративном выражении (if или foreach и т. Д.).В этом случае вы можете обернуть все это в <text>:

@if(Foo) {
  <text><b>@parameterMapping.Title</b>
  (Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)</text>
}

Вместо <text> вы можете использовать допустимый элемент HTML, такой как <p> или <div>.Это связано с тем, что по умолчанию после { синтаксический анализатор находится в режиме «код» и ему требуется тег разметки для переключения в режим «разметки».

Обратите внимание, что Razor выполняет сопоставление тегов, поэтому вам необходимоиметь всю область действия оператора if, содержащегося в теге, если вы хотите, чтобы все это обрабатывалось как разметка.В противном случае все, что не находится внутри тега, будет рассматриваться как код:

@if(Foo) {
  // Treate as code
  <text>
    Markup
    <div>More markup</div>
    @EscapeIntoCode
  </text>
  // Treate as code again
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...