如何使用Razor视图引擎在ASP.NET MVC5中创建html表
我需要创建一个如下所示的表:如何使用Razor视图引擎在ASP.NET MVC5中创建html表,asp.net,asp.net-mvc,razor,razorengine,Asp.net,Asp.net Mvc,Razor,Razorengine,我需要创建一个如下所示的表: S1 S2 S3 S4 S5 C1 C1S1 C1S2 C1S3 C1S4 C1S5 C2 C2S1 C2S2 C2S3 C2S4 C2S5 C3 C3S1 C3S2 C3S3 C2S4 C3S5 C4 C4S1 C4S2 C4S3 C3S4 C4S5 C5 C5S1 C5S2 C5S3 C4S4 C5S5 但以下代码: <table> @foreac
S1 S2 S3 S4 S5
C1 C1S1 C1S2 C1S3 C1S4 C1S5
C2 C2S1 C2S2 C2S3 C2S4 C2S5
C3 C3S1 C3S2 C3S3 C2S4 C3S5
C4 C4S1 C4S2 C4S3 C3S4 C4S5
C5 C5S1 C5S2 C5S3 C4S4 C5S5
但以下代码:
<table>
@foreach (var client in this.Model.Clients)
{
<tr>
<td >@client.Name</td>
@foreach (var session in this.Model.Sessions)
{
foreach (var data in this.Model.ClientSessions)
{
if (data.ClientId== client.ClientId&& data.SessionId == session.SessionId)
{
<td>@data.TotalClientSessions</td>
}
}
}
</tr>
}
</table>
我不知道如何巧妙地修改此代码以获取标题。
我会在底部添加另一个foreach,以这样创建标题行:
<tr>
<th></th>
@foreach (var session in this.Model.Sessions)
{
<th>@Session.Id</th>
}
</tr>
@foreach(此.Model.Sessions中的var会话)
{
@会话Id
}
但我相信,还有其他更聪明的解决方案可以实现这一目标。
任何帮助都将不胜感激。由于HTML表是逐行呈现的,而不是逐列呈现的,因此您必须在客户端上进行迭代,因此无法生成标题行作为此循环的一部分。没有丑陋的黑客。因为您可能会在列表中插入一个表示标题行的虚拟客户机,但这听起来很难听,我不建议这样做
您提出的解决方案在会话中使用单独的foreach,我觉得它非常好、最优且可读。我会用同样的方法来处理。我觉得你的解决方案很好。是什么让你不高兴呢?这段代码不生成标题。我的意思是第一行(s1s2 s3s4s5)我不知道如何实现,因为无论我如何修改它,编译器仍然会抱怨语法错误……等等,所以第二个代码段会产生语法错误?错误是什么,在哪一行?不,第二个代码段不会产生错误。但我宁愿去掉这个额外的片段。是否可以在不使用第二个代码段的情况下绘制标题名称?(我正在寻找在第一个代码段中只使用三个嵌套循环的解决方案)
<tr>
<th></th>
@foreach (var session in this.Model.Sessions)
{
<th>@Session.Id</th>
}
</tr>