Проблема, с которой вы столкнулись, заключается в том, что @ViewData["Test"]
неявно вызывает ToString()
к объекту DataTable
, который будет возвращать полностью определенное имя System.Data.DataTable
вместо его содержимого (строк и столбцов).Если вы хотите создать таблицу из нее, вы должны создать структуру HTML <table>
следующим образом:
@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>
Или лучше передать DataTable
непосредственно в модель:
КонтроллерДействие
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>
Эта скрипка содержит живой пример того, как вы должны создать таблицу внутри страницы представления.
Проблема, связанная с данной:
Отображение стандартных таблиц данных в MVC