【问题标题】:MVC3 Razor: Displaying html within code blocksMVC3 Razor:在代码块中显示 html
【发布时间】:2011-09-29 22:52:25
【问题描述】:

在我的 cshtml 文件中,我有很多这样的块:

@if(Model.foo)
{
    <span>Hello World</span>
}

跨度存在的唯一原因是因为我找不到任何其他方法来强制它识别“Hello World”是 html 的一部分,除非我将它包围在 html 标记中。有没有不涉及在显示中添加无意义标签的代码转义的好方法?

【问题讨论】:

    标签: asp.net-mvc-3 razor


    【解决方案1】:

    上面的答案很棒。我将包含一个指向 Scott Guthrie 的文章的链接,因为它显示了更多示例和解释。

    https://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

    @if (p.UnitsInStock == 0 {
      <text>
        Donec in ante vitae purus consequat laoreet ut elementum
        purus. Ut ut tempus nulla, quis ultrices est. Integer
        pharetra ante in lectus porta, a lacinia ex faucibus. 
        Aliquam magna risus, pretium vel neque at, laoreet 
        ultrices lectus. Morbi posuere luctus risus. Nullam 
        tincidunt massa egestas nunc tempor scelerisque.  
      </text>
    }
    
    
    @if (p.UnitsInStock == 0 {
      @: Line 1
      @: Line 2
      @: Line 3
    }

    【讨论】:

      【解决方案2】:

      许多开发人员在上面提供了许多方法 .. 这里还有一种在 MVC 4 中运行良好的方法 .. 我希望它也适用于 MVC 3 ..

      @if(Model.foo)
      {
          @Html.Label("Hello World")
      }
      

      【讨论】:

        【解决方案3】:

        您可以添加如下文本:

        @if(Model.foo)
        {
            @:Hello World
        }
        

        当您使用@ razor 时,将其切换到代码块模式。因此,您需要如上所述指定文本。

        【讨论】:

          【解决方案4】:
          <text>Explicit HTML<text>
          
          @(Explicit C#)
          

          【讨论】:

            【解决方案5】:
            @if(Model.foo)
            {
              @:Hello World
            }
            

            【讨论】:

              【解决方案6】:

              您可以使用@: 转义:

              @if(Model.foo)
              {
                  @:Hello World
              }
              

              或者响应中没有输出的特殊&lt;text&gt;标签:

              @if(Model.foo)
              {
                  <text>Hello World</text>
              }
              

              【讨论】:

              • 第二种方式(使用)要好得多。如果你使用@: Razor 有一个习惯会丢失你的缩进,或者更糟糕的是在 HMTL 标签中添加额外的空格(例如
                变成 ),从而导致你的页面无法正常工作。我已经缓慢而痛苦地吸取了这一教训 - 避免@:!
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-17
              • 2011-10-17
              • 1970-01-01
              • 2013-12-13
              • 1970-01-01
              相关资源
              最近更新 更多