如何使用 ViewData 在 MVC 中加载 HTML 表?

Posted

技术标签:

【中文标题】如何使用 ViewData 在 MVC 中加载 HTML 表?【英文标题】:How to load HTML Table in MVC using ViewData? 【发布时间】:2013-11-25 07:41:53 【问题描述】:

我的视图中有下表:

<table id="tblHelpRow">
    <thead>
        <tr class="title">
            <th>
                1
            </th>
            <th>
                2
            </th>
            <th>
                3
            </th>
            <th>
                4
            </th>
        </tr>
    </thead>
    <tbody id="helpRowBody">       
        @ ViewData["MattersTable"].ToString(); 
    </tbody>
</table>

在我的控制器中,我为此表创建了一个主体并添加到 DataView。我通过从另一个重定向并传递我的 DataTable 来到达这个控制器。实际上我有一点不同,但在这里我写得尽可能简单以显示问题:

public ActionResult Matters(DataTable source)

       string result = "";
       foreach(DataRow dr in source.Rows)
       
            result += "<tr>" +
            "<td>" + dr["1"] + "</td>" +
            "<td>" + dr["2"] + "</td>" +
            "<td>" + dr["3"] + "</td>" +
            "<td>" + dr["4"] + "</td>" +
            "</tr>";
       
       ViewData["MattersTable"] = result;
       return View();

但结果我得到了带有列标题但里面没有内容的页面...源页面告诉我 tbody 里面什么都没有...

【问题讨论】:

@ViewData["MattersTable"](没有括号也没有分号)怎么样? 我在表格之前得到了整个纯字符串,然后是只有标题的空表格...... 是的,您还需要用 html.Raw() 包装它,因为您传递的是原始 html 字符串...@Html.Raw(ViewData["MattersTable"]) 如何使它成为局部视图而不是连接字符串服务器端? 作为旁注,并同意 adt,请不要对生产代码这样做;) 【参考方案1】:

试试这个:

<table id="tblHelpRow">
    <thead>
        <tr class="title">
            <th>
                1
            </th>
            <th>
                2
            </th>
            <th>
                3
            </th>
            <th>
                4
            </th>
        </tr>
    </thead>
    <tbody id="helpRowBody">       
        @Html.Raw(ViewData["MattersTable"])
    </tbody>
</table>

【讨论】:

以上是关于如何使用 ViewData 在 MVC 中加载 HTML 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

在 MVC 中加载 jqGrid

使用 JS 在 MVC 中加载部分视图时出错

如何从文件中加载二维字符数组并使用 ncurses.h 在 C 中使用 mvprintw() 打印它?

无法在 MVC 项目中加载 CSS

如何在cppyy中加载库?