Asp.net mvc 调用ViewData时不显示任何数据

Asp.net mvc 调用ViewData时不显示任何数据,asp.net-mvc,Asp.net Mvc,所以我试着在控制器上做表格这是我输入的代码 DataTable table = new DataTable(); Table.Columns.Add("Nama", typeof(string)); Table.Columns.Add("Nama2", typeof(string)); Table.Rows.Add("Manama", "Jeff"); Table.Rows.Add("Damn", "Daniel");

所以我试着在控制器上做表格这是我输入的代码

 DataTable table = new DataTable();
        Table.Columns.Add("Nama", typeof(string));
        Table.Columns.Add("Nama2", typeof(string));

        Table.Rows.Add("Manama", "Jeff");
        Table.Rows.Add("Damn", "Daniel");

        ViewData["Test"] = Table;



@ViewData["Test"] // when i type this it doesnt show anything on new page when i run it
您遇到的问题是@ViewData[Test]隐式调用DataTable对象的ToString,这将返回System.Data.DataTable的完全限定名,而不是其内容行和列。如果要从中创建表,应创建如下HTML结构:

@using System.Data
@{
    var table = ViewData["Test"] as DataTable;
}

<table>
   <thead>
       <tr>
           @foreach (DataColumn col in table.Columns)
           {
               <th>@col.Caption</th>
           }
       </tr>
   </thead>
   <tbody>
        @foreach (DataRow row in table.Rows)
        {
            <tr>
                @foreach (var cell in row.ItemArray)
                {
                    <td>@cell.ToString()</td>
                }
            </tr>
        }
    </tbody>
</table>
看法

包含如何在视图页面内创建表的实时示例

相关问题:

请注意,ViewData包含DataTable,使用@ViewData[Test]将返回完全限定的名称,例如System.Data.DataTable,而不是其内容,因为ToString是隐式调用的。您需要将DataTable作为IEnumerable进行迭代以获得其结果。
DataTable table = new DataTable();
table.Columns.Add("Nama", typeof(string));
table.Columns.Add("Nama2", typeof(string));

table.Rows.Add("Manama", "Jeff");
table.Rows.Add("Damn", "Daniel");

return View(table);
@using System.Data

<table>
   <thead>
       <tr>
           @foreach (DataColumn col in Model.Columns)
           {
               <th>@col.Caption</th>
           }
       </tr>
   </thead>
   <tbody>
        @foreach (DataRow row in Model.Rows)
        {
            <tr>
                @foreach (var cell in row.ItemArray)
                {
                    <td>@cell.ToString()</td>
                }
            </tr>
        }
    </tbody>
</table>