为什么此代码不会删除布局?

Zot*_*ote 12 razor asp.net-mvc-3

我花了一些时间尝试使用以下方法删除布局(在_ViewStart中定义):

@Layout = ""
Run Code Online (Sandbox Code Playgroud)

@Layout = null
Run Code Online (Sandbox Code Playgroud)

为什么它只能使用块?

@{
  Layout = "";
}
Run Code Online (Sandbox Code Playgroud)

在我看来,两种方式都应该有效.

SLa*_*aks 15

@Layout是一个代码块.
它打印Layout属性的值.

Razor解析器在单词后面的空格处停止Layout,因此将= null其解析为文字标记.

您想要执行语句,而不是打印值,因此您需要使用代码(@{ ... }).

有关更多信息,请参阅我的博客文章.