我有用户可以填写数据的模板表单。表格表示为表格。在数据库中,每个填写的模板表单的数据都与 RowNum 和 ColNum 一起保存,因此我可以按需重新创建表单。问题在于,对于一种形式,不同行上的列会有所不同。为了清楚起见,这里是一个简单的例子:
这里第一行是空的,第二行有一列显示图片,然后是四行两列。
这只是一个例子。设置会因形式而异。现在我收集这样的数据:
List<object> dummyData = new List<object>()
{
new {Row = 1, Col = 1, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 1, Col = 2, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 2, Col = 1, IsRequired = true, QuestionText = "No?", FieldValue = "string"},
new {Row = 3, Col = 1, IsRequired = false, QuestionText = "No?", FieldValue = "string"}
};
ViewBag.Header = dummyData;
这只是为了测试,但真实数据看起来很像这样。因此,您可以看到第一条和第二条记录是针对同一行的,但现在我想不出一种在视图中正确表示数据的方法。
现在,我正在通过使用<td colspan="2">
我知道不需要两列的地方对所有内容进行硬编码,但是当我在示例中遇到这样的情况时,没有关于如何添加额外列而不是新行的解决方案:
new {Row = 1, Col = 1, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 1, Col = 2, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
也许我需要一种完全不同的方法,现在我想到了某种使用方法foreach
和一些嵌套逻辑,但现在想不出任何可行的方法。
附言
现在我在视图中所做的就是:
@{
foreach (var item in ViewBag.Header)
{
<tr><td>item.QuestionText</td><td>item.FieldValue</td></tr>
}
}