for 循环内部 if 块在 HTML 中
本文关键字:HTML 块在 if 循环 内部 for | 更新日期: 2023-09-27 18:31:29
我很难理解为什么这不起作用:
@if ((Model.doaFormGroupDocuments.Count != 0) || (Model.doaFormGroupDocuments != null))
{
@for(var i = 0; i < Model.doaFormGroupDocuments.Count; i++)
{
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Checked)
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Id)
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Name)
}
}
我在 for 循环旁边的 @ 下收到一条红色错误线。这在 HTML 中是不允许的吗?
约翰,这看起来像 ASP.NET MVC,我假设是这样。
发生的情况是,您有两个上下文,HTML 和 Razor,任何时候您有@
它都会切换到 Razor 上下文,当您有 HTML 标记时,<text>
或@:
它会切换 HTML 上下文。
Visual Studio 抱怨是因为您处于 razor 上下文中(来自 if 语句),并且尝试使用 @for 再次进入 razor 上下文,您只需要在 for 循环之前删除 @。另外请注意,将正确处理 for 循环中的三个帮助程序调用,因为它知道您在那里返回 IHtmlStrings。
您已经在 razor 的代码块内,因此您不需要 for
关键字前面的@
。
@if ((Model.doaFormGroupDocuments.Count != 0) || (Model.doaFormGroupDocuments != null))
{
for(var i = 0; i < Model.doaFormGroupDocuments.Count; i++)
{
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Checked)
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Id)
@Html.HiddenFor(model => model.doaFormGroupDocuments[i].Name)
}
}
看到这个问题
"@"字符后出现意外的"foreach"关键字