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

C# Web API遍历POST数据数组生成对齐HTML表格实现问题

问题根因

你当前的代码存在两个核心逻辑问题:

  • 拼接HTML行时,Obj1和Obj2的每个元素都单独生成了一行<tr>,且每行仅包含一个<td>,导致所有内容都堆积在表格第一列
  • 没有将Obj1和Obj2的元素按索引对应,放在同一行的两个<td>节点中

调整方案

先从提交的数据中把所有Obj1、Obj2的元素分别汇总到两个独立的列表中,再取两个列表的最大长度作为总行数,逐行生成包含两列内容的<tr>节点即可,同时兼容两个列表长度不一致的边界场景。

调整后代码

public string POST([FromBody] MyData data)
{
    // 先汇总所有Obj1和Obj2的元素到独立列表
    List<string> allObj1Items = new List<string>();
    List<string> allObj2Items = new List<string>();
    foreach (var item in data.Submitter)
    {
        if (item.Obj1 != null)
        {
            allObj1Items.AddRange(item.Obj1);
        }
        if (item.Obj2 != null)
        {
            allObj2Items.AddRange(item.Obj2);
        }
    }

    // 取最大长度作为总行数
    int maxRowCount = Math.Max(allObj1Items.Count, allObj2Items.Count);
    string tbodyContent = string.Empty;
    for (int i = 0; i < maxRowCount; i++)
    {
        string obj1Val = i < allObj1Items.Count ? allObj1Items[i] : string.Empty;
        string obj2Val = i < allObj2Items.Count ? allObj2Items[i] : string.Empty;
        tbodyContent += $"<tr><td>{obj1Val}</td><td>{obj2Val}</td></tr>";
    }

    string body = @$"<table>
<thead>
<tr>
    <th>Object 1</th>
    <th>Object 2</th>
</tr>
</thead>
<tbody>
{tbodyContent}
</tbody>
</table>";

    return body;
}

效果验证

用你提供的JSON结构测试时,allObj1Items会得到["test","test2"],allObj2Items会得到["test3","test4"],最终生成的表格完全符合你预期的两列对齐效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:09:03