Razor 为什么添加此代码块会破坏语法?
此代码适用于:Razor 为什么添加此代码块会破坏语法?,razor,Razor,此代码适用于: @{ if (...) { foreach (...) { if (...) { if (...) { if (...) { (*some
@{
if (...)
{
foreach (...)
{
if (...)
{
if (...)
{
if (...)
{
(*some html*)
}
}
else
{
(*some html*)
}
}
else
{
(*some html*)
}
}
}
}
但是,当我添加if/else语句以获得以下结果时:
@{
if (...)
{
foreach (...)
{
if (...)
{
if (...)
{
***ADDING THIS***
if (...)
{
(*opening html tag (no closing tag)*)
}
else
{
(*opening html tag (no closing tag)*)
}
******************
if (...)
{
(*some html*)
}
}
else
{
(*some html*)
}
}
else
{
(*some html*)
}
}
}
}
它坏了,为什么?现在,Visual Studio中的语法突出显示无法识别if/else后面的if语句,我得到了一个关于缺少“}”的错误。我添加的标记是一个没有结束标记的开始标记,Razor不允许这样做。在这种情况下,您可以在代码块中输出HTML,如下所示:
@Html.Raw("<html>")
@Html.Raw(“”)
(来自MS-的Html.Raw参考)
或者这个:
@:<html>
@:
@:在Razor中,以纯文本形式呈现某些内容至少您需要解释“中断”的含义,提供错误输出(如果有)和预期结果。我意识到你删除了很多内容,把重点放在你认为相关的代码上,但如果你不知道哪些内容被破坏了,你就不知道哪些内容是相关的。最后,作为一个快速测试,您是否只尝试了
***之间的代码,自己添加了这个***
标记,而没有其他嵌套的if
s?谢谢,我刚才添加了一些关于错误的详细信息。好的,您建议自己测试代码,这让我尝试从添加的代码块中删除标记。标记添加了一个开始标记而不是结束标记,似乎出于某种原因Razor不喜欢这样??如果我添加了一个结束标记,它会修复代码,但这意味着我无法通过这种方式实现我想要做的事情,因为我需要在页面的下一步关闭标记。