首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebMatrix建表

使用WebMatrix建表
EN

Stack Overflow用户
提问于 2011-12-27 05:59:32
回答 1查看 1.9K关注 0票数 1

我正在尝试使用WebMatrix (ASP.NET网页)构建一个HTML表,但由于打开和关闭HTML标签的方式而遇到了问题。

我想要实现的是从一个记录集创建一个包含三列的表,然后填充任何空列。

这是我正在使用的一些测试代码,用来研究如何使用WebMatrix来实现这一点。

代码语言:javascript
复制
<table>
@{
 int row = 0;
 int col = 0;
 for (int i = 0; i < 20; i++) //20 cells for test purposes
 {
  col++;
  if (col == 4)
  {
   col = 1;
  }
  if (col == 1)
  {
   row++;
   if (row != 1)
   {
    </tr>
   }
   <tr>
  }
  <td>@i</td>
 }
 for (int i = col; i <=3; i++)
 {
  <td>empty</td>
 }
 </tr>
}
</table>

关于如何最好地实现这一点的任何建议。

EN

回答 1

Stack Overflow用户

发布于 2011-12-27 21:10:06

在打印之前对数据集进行分组如何?It视图模型被称为视图模型( ASP.NET model )。不幸的是,在WebMatrix中,你没有一个控制器可以完成这个视图模型的准备工作,但是你可以在代码背后或者Razor页面的这一部分被称为:

代码语言:javascript
复制
@{
    // group the dataset by 3 elements
    var data = Enumerable.Range(0, 20).GroupBy(x => x / 3);
}

<table>
@foreach (var group in data)
{
    <tr>
        @foreach (var item in group)
        {
            <td>@item</td>
        }
        @for (int i = 0; i < 3 - group.Count(); i++)
        {
            <td>empty</td> 
        }
    </tr>
}
</table>

如果你有一个复杂对象的数据集,而不仅仅是整数,下面是如何进行分组的:

代码语言:javascript
复制
var dataset = Enumerable.Range(0, 20).Select(x => new { Text = "item " + x });
var data = dataset
    .Select((value, index) => new { Index = index / 3, Item = value })
    .GroupBy(pair => pair.Index);

然后:

代码语言:javascript
复制
<table>
@foreach (var group in data)
{
    <tr>
        @foreach (var element in group)
        {
            <td>@element.Item.Text</td>
        }
        @for (int i = 0; i < 3 - group.Count(); i++)
        {
            <td>empty</td> 
        }
    </tr>
}
</table>

它使代码更具可读性。正如您所看到的,视图模型的使用避免了在视图中编写难看的意大利面条代码。

每次你有一些不匹配的标签,你需要在视图中做整数和模除以及填充,你可能做错了,因为你没有选择正确的视图模型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8639387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档