Попытка отобразить две разные таблицы данных из одной модели в одном представлении - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь отобразить данные из одной модели в виде двух по-разному отфильтрованных таблиц на одной и той же странице просмотра, используя MVC.

Я могу заставить первую таблицу работать идеально, но вторая таблица фильтрует уже отфильтрованные данные из первой таблицы.

, поэтому пример необработанных данных выглядит примерно так:

боб, 10, лондонский счет, 12, париж боб, 10, Нью-Йорк

Я хочу стол с

счетом, 12 бобов, 10

и отдельный стол Лондона Париж Нью-Йорк

Но я получаю второй стол Лондона Париж

Код для первой таблицы выглядит следующим образом:

  <tbody>
            @foreach (var item in Model.Select(p => new { p.PlayerId, p.Position, p.Name, p.RankScore, p.CompsPlayed }).OrderBy(p=>p.Position).Distinct())
        {
            <tr>
                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.Position)
                </td>
                <td>
                    <a asp-action="Index" asp-controller="PlayerResults" asp-route-playerid="@item.PlayerId"> @Html.DisplayFor(modelItem => item.Name)</a>
                </td>

                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.PlayerId)
                </td>
                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.RankScore)
                </td>
                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.CompsPlayed)
                </td>

            </tr>
    }
        </tbody>

Вторая таблица выглядит как

            @foreach (var item in Model.Select(c => new { c.Comp, c.CompID, c.Players, c.Old }).Where(o => o.Old == false).Distinct())
        {
            <tr>
                <td class="text-center">
                    <a asp-action="Index" asp-controller="CompResults" asp-route-id="@item.CompID"> @Html.DisplayFor(modelItem => item.Comp)</a>
                </td>

                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.CompID)
                </td>
                <td class="text-center">
                    @Html.DisplayFor(modelItem => item.Players)
                </td>

            </tr>
    }
        </tbody>

, поэтому я почти уверен, что из первой фильтрации торчит вторая фильтрация.

Любые предложения, как выполнить сброс между двумя таблицами?

Или лучший способ получения данных там.

Я знаю, что было бы лучше перейти к другой взгляд .. но это не то, что хочет босс

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вот простая рабочая демонстрация, вы можете обратиться и внести изменения в свой код:

Модель

public class User
{
    public int Id { get; set; }
    public string Email { get; set; }
    [Display(Name ="First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    public string FullName { get; set; }
    public int Age { get; set; }

    public string Position { get; set; }
}

Просмотр

@model IEnumerable<Demo1.Models.User>

<h2>Table1</h2>

<table class="table">
  <thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.FullName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Age)
        </th>

        <th></th>
    </tr>
  </thead>
  <tbody>
    @foreach (var item in Model.OrderBy(p=>p.Position).Select(p => new { p.FullName, p.Age}).Distinct())
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.FullName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Age)
            </td>
        </tr>
    }
  </tbody>
</table>

<h2>Table2</h2>

<table class="table">
  <thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Position)
        </th>
        <th></th>
    </tr>
  </thead>
  <tbody>
    @foreach (var item in Model.Select(p => new { p.Position }).Distinct())
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Position)
            </td>
        </tr>
    }
  </tbody>
</table>

Результат

enter image description here

0 голосов
/ 06 апреля 2020

Различные способы достижения

  1. Просмотр модели

  2. Просмотр сумки

  3. Просмотр данных

  4. Temp Data

  5. Session

  6. Dynami c

  7. Кортежи

  8. Действие рендеринга

  9. JSON

  10. Свойства навигации

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