4

以下是我想通过 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>

有没有更好的方法来解决这个问题?

4

1 回答 1

13

你写的:

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

实际上在 Razor 中有效。我的猜测是,您在某些条件或迭代语句(ifforeach等)中拥有所有这些。在这种情况下,您可以将整个内容包装在<text>

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

而不是<text>您可以使用有效的 HTML 元素,例如<p>or <div>。这是因为默认情况下{解析器处于“代码”模式后,需要一个标记标签才能切换到“标记”模式。

if请注意,Razor 执行标记匹配,这就是为什么如果要将所有语句都视为标记,则需要将语句的整个范围包含在标记中。否则,不在标签内的所有内容都将被视为代码:

@if(Foo) {
  // Treate as code
  <text>
    Markup
    <div>More markup</div>
    @EscapeIntoCode
  </text>
  // Treate as code again
}
于 2010-09-15T22:09:16.113 回答