使用Razor和.NET的一行If语句

Ell*_*iot 5 vb.net asp.net-mvc if-statement razor

Razor似乎不喜欢我的一行If语句......通常在VB.NET中,我可以If像这样编写一行语句:

If True Then Dim x As Integer
Run Code Online (Sandbox Code Playgroud)

但是,当我在这样的.vbhtml文件中对Razor做同样的事情时......

@If True Then Dim x As Integer
Run Code Online (Sandbox Code Playgroud)

我收到了错误

"If"块未终止.所有"If"语句必须以匹配的"End If"结束.

是什么赋予了?Razor为什么不接受这个?我意识到一个简单的解决方案就是使用类似的代码块

@code
    If True Then Dim x As Integer
End Code
Run Code Online (Sandbox Code Playgroud)

但那不是我想要的.我很好奇为什么Razor无法If使用just 识别VB.Net单行语句@If....有任何想法吗?

jwe*_*ver 7

在VB.Net中,你做一个内联If语句,如下所示:

@(If(boolCondition, "truePart", "falsePart"))
Run Code Online (Sandbox Code Playgroud)


Joa*_*ron 1

C# 也有同样的问题,如下所述:

\n\n
\n

Razor 使用代码语法来推断缩进:Razor 解析器通过读取开始和结束字符或 HTML\n 元素来推断代码\n 结尾。因此,即使对于单行指令,也必须使用开头 \xe2\x80\x9c{\xe2\x80\x9c 和结尾 \xe2\x80\x9c}\xe2\x80\x9d

\n
\n\n

你做了正确的事

\n\n
@code\n    If True Then Dim x As Integer\nEnd Code\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可以这样做,但这不是你喜欢的(内联)

\n\n
@If (True) Then\n    Dim x As Integer\nEnd If\n
Run Code Online (Sandbox Code Playgroud)\n