ViewData не показывает никаких данных при вызове - PullRequest
0 голосов
/ 11 декабря 2018

Итак, я попытался создать таблицы на контроллере, вот код, который я печатал

 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

1 Ответ

0 голосов
/ 11 декабря 2018

Проблема, с которой вы столкнулись, заключается в том, что @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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...