在ASP.NET MVC 3中的每一行上创建具有不同col编号的动态表

时间:2013-04-22 14:56:38

标签: c# html asp.net-mvc-3 razor

我有模板表单,用户可以填写数据。表格表示为表格。在数据库中,每个填充的模板表单的数据都与RowNum和ColNum一起保存,因此我可以根据需要重新创建表单。问题是,对于一种形式,不同行上的列会有所不同。只是为了说清楚这是一个简单的例子:

Example Table

这里第一行是空的,第二行有一列显示图片,然后是4行,有两列。

这只是一个例子。设置因形式而异。现在我收集这样的数据:

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和一些嵌套逻辑,但是现在无法想到任何可行的方法。

P.S

现在,我在视图中所做的只是:

@{
              foreach (var item in ViewBag.Header)
              {

                  <tr><td>item.QuestionText</td><td>item.FieldValue</td></tr>

              }
           }

0 个答案:

没有答案