You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blazor Server应用中渲染带rowspan的父子层级HTML表格

问题根因

Blazor的Razor模板引擎采用结构化的标签解析逻辑,原有代码中通过@:输出不闭合的</tr><tr>打断标签配对的写法,会被引擎自动补全冗余标签,最终导致表格DOM结构不符合预期。

解决方案

调整循环逻辑,让每一条股份数据对应一个完整的<tr>标签,仅在处理同一币种下第一条股份数据时,输出带rowspan属性的序号、货币列,后续同币种的股份数据不再输出这两列即可,完全符合原生HTML表格的合并规范,也能被Blazor正常解析。

修正后的代码如下:

@if (TestModel == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <table class="table table-sm table-responsive table-condensed caption-top">
     <thead>
      <tr>
       <th scope="col">S/No</th>
       <th scope="col">Currency</th>
       <th scope="col">Class of share</th>
       <th scope="col">No.of Shares Held</th>
       <th scope="col">Amount of Issued Share Capital</th>
       <th scope="col">Amount of Paid Up Share Capital</th> 
      </tr>
     </thead>
     <tbody>
        @{ int sno = 1; }
        @foreach (var shareCapital in TestModel.ShareCapitalDetails)
        {
            var shareCount = shareCapital.Shares.Count;
            for(int i = 0; i < shareCount; i++)
            {
                var share = shareCapital.Shares[i];
                <tr>
                    @if(i == 0)
                    {
                        <td rowspan="@shareCount">@sno</td>
                        <td rowspan="@shareCount">@shareCapital.Currency</td>
                    }
                    <td>@share.ClassOfShare</td>        
                    <td>@share.SharesHeld</td>      
                    <td>@share.AmountOfIssuedShareCapital</td>      
                    <td>@share.AmountOfPaidUpShareCapital</td>  
                </tr>
            }
            sno++;
        } 
     </tbody>
    </table>
}

内容的提问来源于stack exchange,提问作者Arjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:09:04