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

如何在.NET Core的cshtml页面中将Model数据渲染到HTML表格?

错误原因

  • Razor语法对C#代码和HTML标记的混写有严格的上下文区分:你将<tr>标签写在@{ }代码块内部后,后续的string[] values = line[i].Split(',');会被Razor识别为HTML文本内容,不会作为C#代码执行,因此触发values不存在的报错
  • line[i]写法错误:foreach循环中迭代得到的line本身就是单条文本行,不需要下标访问
  • 末尾的表格标签没有正确闭合,应该写</table>而非<table>,触发标签解析异常

正确实现方案

1. 视图代码(Index.cshtml)

假设你从控制器传入的Model是IEnumerable<string>类型,对应文本文件的每一行内容:

<table id="empTable">
    <tr>
        <th>Name</th>
        <th>Age</th>
        <th>Salary</th>
    </tr>
    @foreach (string line in Model)
    {
        <tr>
            @{
                // 此处单独包裹C#代码块,Razor会正确解析
                string[] values = line.Split(',');
                foreach (var val in values)
                {
                    <td>@val.Trim()</td>
                }
            }
        </tr>
    }
</table>

2. 控制器传值代码(示例)

你可以在控制器中读取文本文件内容,作为Model传给视图:

using Microsoft.AspNetCore.Mvc;
using System.IO;

public class HomeController : Controller
{
    public IActionResult Index()
    {
        // 示例路径:将employees.txt放到项目wwwroot目录下
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "employees.txt");
        var allLines = File.ReadAllLines(filePath);
        return View(allLines);
    }
}

其他补充

  • 如果需要用到StringBuilder、File等类,只需要在视图顶部加@using System.Text、@using System.IO即可引用对应命名空间;也可以直接在项目的Views/_ViewImports.cshtml文件中添加全局引用,所有视图都可以直接使用对应类,不需要重复加using语句。
  • 不需要走JS动态生成表格的方案,直接用Razor原生语法渲染即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:18:03