我很难理解为什么这不起作用:
@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中不允许这样做吗?
答案 0 :(得分:3)
John,这看起来像ASP.NET MVC,我会假设情况就是这样。
当您有HTML标记@
或<text>
时,如果您有@:
切换到Razor上下文,则会有两种情况,HTML和Razor会发生什么?它会切换HTML上下文。
Visual Studio之所以抱怨是因为你处于剃刀上下文中(来自你的if语句),并试图再次使用@for进入剃须刀上下文,你只需要在for循环之前删除@。另外作为注释,for循环中的三个辅助调用将被正确处理,因为它知道你在那里返回IHtmlStrings。
答案 1 :(得分:1)
您已经在剃须刀的代码区内,因此您不需要@
关键字之前的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)
}
}
看到这个问题