Я пытаюсь создать таблицу с 7 строками и 27 столбцами. Самый высокий столбец должен находиться в верхней части таблицы.таблица в бритве, строки в зависимости от базы данных
модель выглядит следующим образом:
public partial class tblShelve
{
public int id { get; set; }
public string name { get; set; } //For example B-01-07 means column 1, row 7
public int capacity { get; set; } // I am using this to style the cells
public int row { get; set; }
public int column { get; set;}
}
Мои HomeController возвращает это:
private ScanningContext db = new ScanningContext();
// GET: Home
public ActionResult Index()
{
return View(db.tblShelves
.Where(x => x.name.StartsWith("B"))
.OrderByDescending(x => x.column)
.ThenBy(x => x.row)
.ToList()
);
}
И мой Index.cshtml код выглядит следующим образом
@model IEnumerable<Shelves_Visualisation.Models.tblShelve>
...
<table>
@foreach (var item in Model)
{
if (item.name.StartsWith("B-01"))
{
@:<tr class="my-tr">
//old: <tr class="my-tr">
}
@switch (item.capacity)
{
case (0):
<td class="classic-height my-td empty">@item.name</td>
break;
case (50):
<td class="classic-height my-td half-full">@item.name</td>
break;
default:
<td class="classic-height my-td full">@item.name</td>
break;
}
@if(item.name.StartsWith("B-27"))
{
@:</tr>
//old: </tr>
}
}
</table>
Но это только создает пустая страница. Visual Studio говорит мне, что элемент <tr>
не был закрыт, а </tr>
не имеет соответствующего начального тега. Любые идеи, как это исправить? (Response.Write не вариант, так как он просто выводит вывод в начало страницы за пределами тега <body>
). Без условий на <tr>
тег работает, поэтому я знаю, что ошибка должна быть где-то там.
Результат должен выглядеть следующим образом:
Я получил это от статического HTML, который я создал, как это:
<table>
@for (int i = 7; i > 0; --i)
{
<tr>
@for (int j = 1; j < 28; ++j)
{
switch (rnd.Next(0, 3))
{
case (0):
<td class="classic-height my-td full">[email protected]("{0,2:D2}", j)[email protected]("{0,2:D2}", i)</td>
break;
case (1):
<td class="classic-height my-td half-full">[email protected]("{0,2:D2}", j)[email protected]("{0,2:D2}", i)</td>
break;
default:
<td class="classic-height my-td empty">[email protected]("{0,2:D2}", j)[email protected]("{0,2:D2}", i)</td>
break;
}
}
</tr>
}
</table>
Используйте '@:
@StephenMuecke благодарит, что это помогло с этими жалобами Visual Studio, но не с пустой страницей. – Dracke
Если вы попробуете: var x = db.tblShelves . Где (x => x.name.StartsWith ("B")) .OrderByDescending (x => x.column) .ThenBy (x => x.row) .ToList() ); вы уверены, что данные возвращаются –