Razor不理解unclosed html标签

syd*_*yos 97 razor asp.net-mvc-3

使用RazorViewEngine,我可以这样做:

if (somecondition) {
     <div> some stuff </div>
}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法做到这一点(Razor感到困惑):

if (somecondition) {
    <div>
}

if (someothercondition) {
    </div>
}
Run Code Online (Sandbox Code Playgroud)

我有一种情况需要将我的开始和结束html标签放在不同的代码块中 - 我怎样才能在Razor中执行此操作?

Dar*_*rov 158

试试这样:

if (somecondition) {
    @:<div>
}
Run Code Online (Sandbox Code Playgroud)

  • `<text> <div> </ text>`有效,但`<text> </ div> </ text>`没有. (15认同)

Chr*_*row 58

要解释Darin的答案,即为HTML加前缀如下:

@:<html>
Run Code Online (Sandbox Code Playgroud)

@:在Razor中意味着'将某些内容呈现为纯文本'

或者您可以使用它,在您原始编写它时输出HTML(这也可以用来避免Razor在您尝试输出HTML时执行的自动HTML编码):

@Html.Raw("<html>")
Run Code Online (Sandbox Code Playgroud)

(来自MS的Html.Raw参考 - http://msdn.microsoft.com/en-us/library/gg568896(v=vs.111).aspx)

  • 解决方案很棒,但是解释是无价的。谢谢! (2认同)
  • 我更喜欢@ Html.Raw("<html>")解决方案,因为第一个在使用自动格式化时在多行上分割(ctrl + K ctrl + D) (2认同)