Я сохранил данные из таблицы базы данных в DataTable dt.DataTable заполняется в контроллере.Я пытаюсь получить данные DataTable на HTML-странице с подкачкой.Но почему-то данные не печатаются.Возможно, это связано с тем, что DataTable не получает доступ к представлению из контроллера.Вот что я сделал:
Контроллер:
int pageindex = 0;
public DataTable GetRecords()
{
pageindex = pageindex + 20;
string constr = ConfigurationManager.ConnectionStrings["BOConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Invoice ORDER BY OrderId ASC OFFSET (@pageindex) ROWS FETCH NEXT 20 ROWS ONLY"))
{
cmd.Parameters.AddWithValue("@pageindex", pageindex);
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
}
Просмотр:
@using System.Data;
@using System.Data.DataTable;
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Reports</title>
</head>
<body>
<div>
<a href=@Url.Action("GetRecords", "Records")>Print Records</a><br />
<table border="1" cellpadding="5">
<thead>
<tr>
@foreach (System.Data.DataColumn col in Model.Columns)
{
<th>@col.Caption</th>
}
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow row in Model.Rows)
{
<tr>
@foreach (var cell in row.ItemArray)
{
<td>@cell.ToString()</td>
}
</tr>
}
</tbody>
</table>
</div>
</body>
</html>
Но это бросаетошибка: 'Ссылка на объект не установлена на экземпляр объекта.'в Models.Columns.Я думаю, что это потому, что DataTable не заполняется (или ссылка).Как я могу это сделать?Как я могу дать ссылку на DataTable dt в Controller для представления?Что, если в контроллере было несколько DataTables?