#asp.net #asp.net-mvc #asp.net-core #.net-core #partial-views
#asp.net #asp.net-mvc #asp.net-core #.net-ядро #частичные представления
Вопрос:
Я работаю над проектом веб-приложения, используя Asp.Net Ядро MVC, где у меня есть представление, отображающее горизонтальную таблицу. Я использую частичный просмотр для достижения этой цели, но я застрял на том, как я могу представить фиксированные пять строк следующим образом:
- День
- Дата
- Подходит
- Неуместно
- Отсутствие взаимодействия
каждая строка будет выводить значения динамически.
Вот мой взгляд, где он передает все, как ожидалось.
<form method="get" asp-action="details">
<table class="table order-list">
<thead>
@for (int i = 0; i < Model.SessionList.Count; i )
{
<partial name="_ChartDetailsPartial" for="@Model.SessionList[i]"
/>}
</thead>
</table>
</form>
Вот мой PartialView, где я хочу отобразить и упорядочить все там.
@model TestApplication.Models.ViewModels.SessionViewModel
@{
ViewData["Title"] = "_ChartDetailsPartial";
}
<input type="hidden" asp-for="Id" />
<tr>
<th>Day</th>
@for (int i = 0; i < 16; i )
{
<td>@Html.DisplayFor(m => m.Day)</td>
}
</tr>
<tr>
<th width="200">Date</th>
@for (int i = 0; i < 16; i )
{
<td>@Html.DisplayFor(m => m.Date)</td>
}
</tr>
<tr>
<th style="text-decoration: underline limegreen">Appropriate Data</th>
@for (int i = 0; i < 16; i )
{
<td>@Html.DisplayFor(m => m.Appropriate)</td>
}
</tr>
<tr>
<th style="text-decoration: underline red">InAppropriate Data</th>
@for (int i = 0; i < 16; i )
{
<td>@Html.DisplayFor(m => m.NotAppropriate)</td>
}
</tr>
<tr>
<th style="text-decoration: underline darkgray">No Interaction Data</th>
@for (int i = 0; i < 16; i )
{
<td>@Html.DisplayFor(m => m.NoInteraction)</td>
}
</tr>
То, чего я пытаюсь достичь, похоже на рисунок ниже:
Комментарии:
1. Не могли бы вы, возможно, добавить желаемый результат в виде изображения или текстового представления? Мне трудно представить, что вы хотите сделать? Но для начала таблица html в любом случае неверна. Должно быть
<tr><th> </th><tr><td> </td></tr>
не<tr><th> </th><td>...
2. Вы можете проверить рисунок выше.
3. Кстати, я бы переместил всю таблицу в частичный вид и
<input>
является недопустимым дочерним элементом<table>
,<thead>
<tbody>
или<tr>
; он принадлежит<td>
или<th>
4. Не могли бы вы поделиться, на что похожа ваша модель?
Ответ №1:
Вот рабочая демонстрация, как показано ниже:
Модель:
public class TestViewModel
{
public List<SessionViewModel> SessionList { get; set; }
}
public class SessionViewModel
{
public int Id { get; set; }
public int Day { get; set; }
public int Date { get; set; }
public int Appropriate { get; set; }
public int NotAppropriate { get; set; }
public int NoInteraction { get; set; }
}
Вид:
@model TestViewModel
<form method="get" asp-action="details">
<table class="table order-list">
<thead>
<tr>
<th>amp;nbsp;</th>
@for (int i = 1; i <= Model.SessionList.Count(); i )
{
<th>@i</th>
}
</tr>
</thead>
<tbody>
<partial name="_ChartDetailsPartial" for="@Model.SessionList" />
</tbody>
</table>
</form>
Частичный просмотр:
@model List<SessionViewModel>
<tr>
<th>Day</th>
@for (int i = 0; i < Model.Count(); i )
{
<input type="hidden" asp-for="@Model[i].Id" />
<td>@Html.DisplayFor(m => m[i].Day)</td>
}
</tr>
<tr>
<th width="200">Date</th>
@for (int i = 0; i < Model.Count(); i )
{
<td>@Html.DisplayFor(m => m[i].Date)</td>
}
</tr>
<tr>
<th style="text-decoration: underline limegreen">Appropriate Data</th>
@for (int i = 0; i < Model.Count(); i )
{
<td>@Html.DisplayFor(m => m[i].Appropriate)</td>
}
</tr>
<tr>
<th style="text-decoration: underline red">InAppropriate Data</th>
@for (int i = 0; i < Model.Count(); i )
{
<td>@Html.DisplayFor(m => m[i].NotAppropriate)</td>
}
</tr>
<tr>
<th style="text-decoration: underline darkgray">No Interaction Data</th>
@for (int i = 0; i < Model.Count(); i )
{
<td>@Html.DisplayFor(m => m[i].NoInteraction)</td>
}
</tr>
Ответ №2:
Вы можете сделать вот так,
<form method="get" asp-action="details">
<table class="table order-list">
<thead>
<tr>
<th>amp;nbsp;</th>
@for (int i = 1; i < 16; i )
{
<th>@i</th>
}
</tr>
</thead>
<tbody>
<partial name="_ChartDetailsPartial" for="@Model.SessionList"/>
</tbody>
</table>
</form>
Частичный просмотр
@model List<TestApplication.Models.ViewModels.SessionViewModel>
@{
ViewData["Title"] = "_ChartDetailsPartial";
}
@for (int i = 0; i < Model; i )
{
var session = Model[i];
<tr>
<td>Day</td>
@for (int i = 1; i < 16; i )
{
<td>
<input type="hidden" asp-for="Id" />
@Html.DisplayFor(m => m.Day)
</td>
}
</tr>
<tr>
<td width="200">Date</td>
@for (int i = 1; i < 16; i )
{
<td>@Html.DisplayFor(m => m.Date)</td>
}
</tr>
<tr>
<td style="text-decoration: underline limegreen">Appropriate Data</td>
@for (int i = 1; i < 16; i )
{
<td>@Html.DisplayFor(m => m.Appropriate)</td>
}
</tr>
<tr>
<td style="text-decoration: underline red">InAppropriate Data</td>
@for (int i = 1; i < 16; i )
{
<td>@Html.DisplayFor(m => m.NotAppropriate)</td>
}
</tr>
<tr>
<td style="text-decoration: underline darkgray">No Interaction Data</td>
@for (int i = 1; i < 16; i )
{
<td>@Html.DisplayFor(m => m.NoInteraction)</td>
}
</tr>
}
Комментарии:
1. Результатом этого кода является «Вертикальная» таблица.. это не мой случай, мне нужно, чтобы она была «горизонтальной», как показано на рисунке выше.
2. У вас есть несколько вертикальных таблиц? Чтобы понять, почему вы используете этот блок кода
@for (int i = 0; i < Model.SessionList.Count; i )