我正在尝试创建一个包含7行和27列的表。最高的列应位于表格的顶部。
该模型如下所示:
public partial class tblShelve
{
public int id { get; set; }
public string name { get; set; } //For example B-01-07 means column 1, row 7
public int capacity { get; set; } // I am using this to style the cells
public int row { get; set; }
public int column { get; set;}
}
我的HomeController返回:
private ScanningContext db = new ScanningContext();
// GET: Home
public ActionResult Index()
{
return View(db.tblShelves
.Where(x => x.name.StartsWith("B"))
.OrderByDescending(x => x.column)
.ThenBy(x => x.row)
.ToList()
);
}
我的Index.cshtml代码看起来像这样
@model IEnumerable<Shelves_Visualisation.Models.tblShelve>
...
<table>
@foreach (var item in Model)
{
if (item.name.StartsWith("B-01"))
{
@:<tr class="my-tr">
//old: <tr class="my-tr">
}
@switch (item.capacity)
{
case (0):
<td class="classic-height my-td empty">@item.name</td>
break;
case (50):
<td class="classic-height my-td half-full">@item.name</td>
break;
default:
<td class="classic-height my-td full">@item.name</td>
break;
}
@if(item.name.StartsWith("B-27"))
{
@:</tr>
//old: </tr>
}
}
</table>
但它只是创建一个空页面。 Visual Studio告诉我,<tr>
元素未关闭且</tr>
没有匹配的开始标记。任何想法如何解决这一问题? (Response.Write不是一个选项,因为它只是将输出放在<body>
标记之外的页面开头。没有<tr>
标签上的条件就可以了,所以我知道错误必须在那里。
我是从静态html中得到的,我生成的是这样的:
<table>
@for (int i = 7; i > 0; --i)
{
<tr>
@for (int j = 1; j < 28; ++j)
{
switch (rnd.Next(0, 3))
{
case (0):
<td class="classic-height my-td full">B-@String.Format("{0,2:D2}", j)-@String.Format("{0,2:D2}", i)</td>
break;
case (1):
<td class="classic-height my-td half-full">B-@String.Format("{0,2:D2}", j)-@String.Format("{0,2:D2}", i)</td>
break;
default:
<td class="classic-height my-td empty">B-@String.Format("{0,2:D2}", j)-@String.Format("{0,2:D2}", i)</td>
break;
}
}
</tr>
}
</table>
答案 0 :(得分:1)
以这种格式使用Tr标签到Html.raw @ Html.Raw(&#34;&#34;) 以及关闭tr标签,即@ Html.Raw(&#34;&#34;)
编辑:还必须将其用于<td>
标记。