Razor代码可以阻止输出到视图吗?

ane*_*a20 1 c# asp.net asp.net-mvc razor asp.net-mvc-4

我在Razor中看过这样的例子:

@{
    if(something == true)
    {
      <p>This</p>
    }
    else
    {
      <p>That</p>
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为Razor代码块不应该向视图输出任何内容,而使用@()定义的表达式也是如此.那怎么可能呢?

dot*_*tom 6

您可以在此页面中找到有关这两种表达方式的详细信息

语句@()称为显式表达式,上面的链接描述如下:

当您想要做一些可能会使解析器混淆的事情时,应该使用明确的印象.例如,如果您需要访问字符串中间的变量,或者您想要对输出进行计算/修改.

Statement @{}被称为多语句代码块.上面的链接描述如下:

Razor代码块以@ -character和{-character的组合开头,以}字符结尾.在此内部,您现在正在编写C#代码.

如此简短的回答是可以使用多语句块,并且通常用于呈现一些HTML.@()当编译器可能在HTML和C#代码之间混淆时,您需要使用显式表达式().