我有一个模板制作工具,可以创建记分卡,可能有10个部分,每部分最多10个问题。在创建我的MVC视图时,我只想显示有问题的部分。我的数据库表中有一个列,其中包含各个部分的计数,每个部分我都有一列表示该部分中的问题数量。我试过这个,但模型绑定不喜欢插入动态名称。我想这可能是我的语法。以下是我尝试但不起作用:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.DepartmentId)
</td>
<td>
@Html.DisplayFor(modelItem => item.TotSections)
</td>
@for (var i = 0; i < item.TotSections; i++ )
{
var section = 1;
var SN = "S" + section + "Name";
var SNUP = "S" + section + "NumUP";
var SNQ = "S" + section + "NumQuest";
<td>
@Html.DisplayFor(modelItem => item[SN])
</td>
<td>
@Html.DisplayFor(modelItem => item[SNUP])
</td>
<td>
@Html.DisplayFor(modelItem => item[SNQ])
</td>
}
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.TemplateId }) |
@Html.ActionLink("Details", "Details", new { id = item.TemplateId }) |
@Html.ActionLink("Delete", "Delete", new { id = item.TemplateId })
</td>
</tr>
}
有没有办法做到这一点,还是我需要重新思考?
提前致谢。
编辑:
如果我有一个带有一个部分的Scorcard模板,静态表行将如下所示:
@foreach (var item in Model)
{
<tr>
<!--These are Constant for each item-->
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.DepartmentId)
</td>
<td>
@Html.DisplayFor(modelItem => item.TotSections)
</td>
<!--BELOW IS WHERE I AM HAVING THE PROBLEM-->
<!--I want to create these columns dynamically,-->
<!--depending on how many sections in column '**TotSections**' above-->
<td>
@Html.DisplayFor(modelItem => item.S1Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.S1NumUP)
</td>
<td>
@Html.DisplayFor(modelItem => item.S1NumQuest)
</td>
<!--Below will be constant for each table row-->
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.TemplateId }) |
@Html.ActionLink("Details", "Details", new { id = item.TemplateId }) |
@Html.ActionLink("Delete", "Delete", new { id = item.TemplateId })
</td>
</tr>
}
如果有两个部分:
@foreach (var item in Model)
{
<tr>
<!--These are Constant-->
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.DepartmentId)
</td>
<td>
@Html.DisplayFor(modelItem => item.TotSections)
</td>
<!--BELOW IS WHERE I AM HAVING THE PROBLEM-->
<!--I want to create these columns dynamically,-->
<!--depending on how many sections in column '**TotSections**' above-->
<td>
@Html.DisplayFor(modelItem => item.S1Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.S1NumUP)
</td>
<td>
@Html.DisplayFor(modelItem => item.S1NumQuest)
</td>
<td>
@Html.DisplayFor(modelItem => item.S2Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.S2NumUP)
</td>
<td>
@Html.DisplayFor(modelItem => item.S2NumQuest)
</td>
<!--Below will be constant-->
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.TemplateId }) |
@Html.ActionLink("Details", "Details", new { id = item.TemplateId }) |
@Html.ActionLink("Delete", "Delete", new { id = item.TemplateId })
</td>
</tr>
}
结束视图如下所示:
您可以在TotSections栏中看到:
测试模板1 有1个部分。如果我使用静态视图模型显示这些列,则不应显示列,并且应该在不显示列时显示列。如上图所示,当它只有一个时,它显示了2个部分。
测试模板2 有6个部分,但只显示6个列中的2个,因此缺少4个部分的列。
我最初发布的代码是尝试从item.TotSections获取部分数量,然后动态创建部分列。
希望这更清楚