Горизонтальная таблица HTML в PartialView

#asp.net #asp.net-mvc #asp.net-core #.net-core #partial-views

#asp.net #asp.net-mvc #asp.net-core #.net-ядро #частичные представления

Вопрос:

Я работаю над проектом веб-приложения, используя Asp.Net Ядро MVC, где у меня есть представление, отображающее горизонтальную таблицу. Я использую частичный просмотр для достижения этой цели, но я застрял на том, как я могу представить фиксированные пять строк следующим образом:

  1. День
  2. Дата
  3. Подходит
  4. Неуместно
  5. Отсутствие взаимодействия

каждая строка будет выводить значения динамически.

Вот мой взгляд, где он передает все, как ожидалось.

 <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 )