ASP.NET MVC Razor语法

Sib*_*Guy 4 .net c# asp.net asp.net-mvc razor

以下是我想用Razor表达的内容:

<b>@parameterMapping.Title</b> (Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)
Run Code Online (Sandbox Code Playgroud)

但为了使其可解析,我必须这样写:

<b>@parameterMapping.Title</b> <text>(Category: </text> @parameterMapping.Category.Title <text>, Regexp:</text> @parameterMapping.Regexp <text>)</text>
Run Code Online (Sandbox Code Playgroud)

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

mar*_*ind 13

你写下了什么:

<b>@parameterMapping.Title</b>
(Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)
Run Code Online (Sandbox Code Playgroud)

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

@if(Foo) {
  <text><b>@parameterMapping.Title</b>
  (Category: @parameterMapping.Category.Title, Regexp: @parameterMapping.Regexp)</text>
}
Run Code Online (Sandbox Code Playgroud)

而不是<text>你可以使用像<p>或的有效HTML元素<div>.这是因为默认情况下{解析器处于"代码"模式并且需要标记标记切换到"标记"模式.

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

@if(Foo) {
  // Treate as code
  <text>
    Markup
    <div>More markup</div>
    @EscapeIntoCode
  </text>
  // Treate as code again
}
Run Code Online (Sandbox Code Playgroud)