c# - HTML 中 if block 内的 for 循环

标签 c# html asp.net-mvc razor

我很难理解为什么这行不通:

@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 中不允许这样做吗?

最佳答案

John,这看起来像 ASP.NET MVC,我假设情况就是如此。

发生的情况是,只要您有 @,您就有两个上下文:HTML 和 Razor。当您有 HTML 标记 <text> 时,它会切换到 Razor 上下文。或@:它切换 HTML 上下文。

Visual Studio 正在提示,因为您位于 razor 上下文中(来自 if 语句),并且尝试使用 @for 再次进入 razor 上下文,您只需删除 for 循环之前的 @ 即可。另请注意,for 循环内的三个辅助调用将被正确处理,因为它知道您在那里返回 IHtmlStrings。

关于c# - HTML 中 if block 内的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064213/

相关文章:

c# - WPF中基于RowStyle的CellStyle

c# - 我如何使用 .NET ColorMatrix 更改颜色?

c# - 什么情况下Assembly.GetName().Name可以为null?

c# - 如何在路径段中包含数字(散列)字符#?

javascript - 单击链接时 Angular 隐藏内容

javascript - jQuery 滚动到 anchor 返回 NaN 作为位置哈希

html - div 跳过溢出隐藏但仍然相对于父 div

javascript - 如何在MVC上通过Kendo UI导出Excel?

asp.net-mvc - MVC 5.1 中的 MissingMethodException FileExistenceCache

asp.net-mvc - ASP.NET MVC Controller 设计