2017-04-20 36 views
1

如何在Razor视图内使用rowspan在表中合并单元格?我想自动合并日期和链接单元格,所以我只能从给定日期的所有数据中选择一个,而不是每行中的“Date”和“link”单元格。我尝试使用条件来解决它,但是我得到一个错误(我猜想是语法问题),或者我得到的结果不是我想要的(示例代码为down)。ASP.NET MVC Razor设计表与行跨

<tbody> 
    @foreach (var dayIncidentPair in Model.List) 
        { 
         <tr> 
          <td rowspan="@dayIncidentPair.Item3.Count()">Finded segment in @dayIncidentPair.Datetime.ToString("d")</td> 
          <td rowspan="@dayIncidentPair.Item3.Count()"><a href="~/path">Link here</a></td> 
          @{int i = 0; } 
          @foreach (var segmentInfo in dayIncidentPair.Item3) 
          { 
           if (i > 0) 
           { 
            <text></tr> 
            <tr></text> 
           } 
           <td>@segmentInfo.MValue1.Time.ToString("t")</td> 
           <td>@String.Format("{0:f1}", @segmentInfo. MValue1.Value)</td> 
           <td>@segmentInfo.MValue1.Type</td> 
           <td>@segmentInfo.MValue2.Time.ToString("t")</td> 
           <td>@String.Format("{0:f1}", @segmentInfo.MValue2.Value)</td> 
           <td>@segmentInfo.MValue2.Type</td> 
           i++; 

          } 
          </tr> 
        } 

    </tbody> 

我想是这样的

╔════════════╦════════════╦═════════╦══════════╦═════════╦═════════╦══════════╦═════════╗ 
║ Date ║ Link ║ Time V1 ║ Value V1 ║ Type V1 ║ Time V2 ║ Value V2 ║ Type V2 ║ 
╠════════════╬════════════╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║ 25.01.2017 ║ Link ║   ║   ║   ║   ║   ║   ║ 
║   ║ to XXX ║ 9:10 ║  1.1 ║  A ║ 9:15 ║  5.3 ║  Q ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ╠   ╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ║   ║ 9:30 ║  2.0 ║  B ║ 11:30 ║  4.1 ║  A ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
╠════════════╬════════════╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║ 26.01.2017 ║ Linkto XYX ║   ║   ║   ║   ║   ║   ║ 
║   ║   ║ 11:50 ║  6.2 ║  A ║ 14:27 ║  5.3 ║  P ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
╠════════════╬════════════╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║ 27.01.2017 ║ Linkto XXY ║   ║   ║   ║   ║   ║   ║ 
║   ║   ║ 8:03 ║  2.5 ║  Q ║ 9:47 ║  2.5 ║  A ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ╠   ╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ║   ║ 13:21 ║  4.6 ║  A ║ 14:53 ║  4.3 ║  C ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ╠   ╬═════════╬══════════╬═════════╬═════════╬══════════╬═════════╣ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
║   ║   ║ 15:10 ║  7.4 ║  C ║ 15:45 ║  7.3 ║  B ║ 
║   ║   ║   ║   ║   ║   ║   ║   ║ 
╚════════════╩════════════╩═════════╩══════════╩═════════╩═════════╩══════════╩═════════╝ 
+0

参见[此答案](http://stackoverflow.com/questions/42848883/row-span-using-mvc5/ 42849042#42849042)举例 –

+0

我想我会使用嵌套表而不是使用rowspan来做这件事。 – nurdyguy

+0

@nurdyguy感谢您的回复,但在我的谦卑意见中,我们并非在千禧年的开始。 –

回答

1

我看着这个问题从不同的角度,我找到了解决办法。显然,在通过IF条件标记HTML标记时存在问题。

溶液因此是不使用使用标签<text>而是利用@:

<tbody> 
    @foreach (var dayIncidentPair in Model.List) 
        { 
         <tr> 
          <td rowspan="@dayIncidentPair.Item3.Count()">Finded segment in @dayIncidentPair.Datetime.ToString("d")</td> 
          <td rowspan="@dayIncidentPair.Item3.Count()"><a href="~/path">Link here</a></td> 
          @{int i = 0; } 
          @foreach (var segmentInfo in dayIncidentPair.Item3) 
          { 
           if (i > 0) 
           { 
            @:</tr><tr> 
           } 
           <td>@segmentInfo.MValue1.Time.ToString("t")</td> 
           <td>@String.Format("{0:f1}", @segmentInfo...