Как передать несколько разных объектов БД в один и тот же вид в разных таблицах - PullRequest
0 голосов
/ 11 октября 2018

Для школьного проекта я делаю приложение в ASP.net Core, используя Entity Framework.Для этого приложения я должен выполнить 5 различных проверок заказов, выполненных с SQL, заказы, которые соответствуют критериям sql, должны быть помещены в таблицу.Результаты должны быть размещены в одном и том же виде в другой таблице, соответствующей сработавшей проверке.

Я использую 2 модели: оповещения и заказы, в которых я присоединился к оповещениям и заказам, чтобы я мог получить идентификатор заказа, соответствующий оповещению (Проверьте)

Мое приложение состоит из EFRepository, содержащего следующие методы:

public IEnumerable<Alerts> GetAlertsByCheck(int checkNumber)
{
    IEnumerable<Alerts> temp = null;
    switch (checkNumber)
    {
        case 1:
            temp = DB.Alerts.Where(e => e.Controle.Equals(CHECK_ONE));
            break;
        case 2:
            temp = DB.Alerts.Where(e => e.Controle.Equals(CHECK_TWO));
            break;
        case 3:
            temp = DB.Alerts.Where(e => e.Controle.Equals(CHECK_THREE));
            break;
        case 4:
            temp = DB.Alerts.Where(e => e.Controle.Equals(CHECK_FOUR));
            break;
        case 5:
            temp = DB.Alerts.Where(e => e.Controle.Equals(CHECK_FIVE));
            break;
    }

    return temp;
}

Получение заказов для каждого оповещения

public IEnumerable<Orders> GetOrdersByAlert(IEnumerable<Alerts> alerts)
{
    IEnumerable<Orders> temp = null;
    List<Orders> list = new List<Orders>();
    foreach (var alert in alerts)
    {
        Orders order = DB.Orders.First(e => e.Id == alert.Id);
        list.Add(order);
    }

    temp = list;
    return temp;
}

В следующем представлении я пытаюсьпоместите OrderID каждого чека в отдельную таблицу.Таким образом, таблица 1 должна содержать идентификаторы OrderID, где сработала проверка 1, таблица 2 должна содержать идентификаторы OrderID, где сработала проверка 2.

@using Domain.Models.TableModels
@model IEnumerable<Domain.Models.TableModels.Orders>


@{
    ViewData["Title"] = "ResolvedIssuesOverview";
}

<!-- Check 1 table-->
<div class="row">
    <h2>Resolved Issues Overview</h2>
    <div class="col-md-12">
        <h3>Check 1</h3>
        <p>Total amount of orders from the last 72h is higher than &euro; 100.000</p>
        <table class="table table-striped">
            <tr>
                <th>Order ID</th>
                <th>Status</th>
            </tr>
            @foreach (var order in Model ?? Enumerable.Empty<Orders>())
            {
                <tr>
                    <td>@order.Id</td>
                    <td>Resolved</td>
                </tr>
            }

        </table>
    </div>
    <!-- Check 2-->
    <div class="col-md-12">
        <h3>Check 2</h3>
        <p>Country is in FATF high risk list</p>
        <table class="table table-striped">
            <tr>
                <th>Order ID</th>
                <th>Status</th>
            </tr>
            @foreach (var order in Model ?? Enumerable.Empty<Orders>())
            {
                <tr>
                    <td>@order.Id</td>
                    <td>Resolved</td>
                </tr>
            }
        </table>
    </div>

Теперь в HomeController я дал методу метод id = 2 для тестирования,и он успешно разместил OrderID's из Check_two в таблице.

public ViewResult ResolvedIssuesOverview(int id2=2)
{           
    return View(AlertsRepository.GetOrdersByAlert(AlertsRepository.GetSolvedAlertsByCheck(id2)));           
}

Теперь моя проблема в том, что я не могу понять, как я могу передать другие проверки представлению и поместить их в их собственную таблицу.

Чтобы лучше проиллюстрировать мой вопрос,Таблицы в представлении выглядят так:

+---------+------------------------+
| OrderID |         Check          |
+---------+------------------------+
|       1 | Invalid payment method |
|       2 | Invalid payment method |
+---------+------------------------+

+---------+------------------------+
| OrderID |         Check          |
+---------+------------------------+
|       3 | Payment aborted        |
|       4 | Payment aborted        |
+---------+------------------------+

Любая помощь будет принята с благодарностью!Заранее спасибо:)

1 Ответ

0 голосов
/ 11 октября 2018

Создайте класс модели представления и передайте его представлению, заполненному двумя таблицами.

public class OrdersViewModel
{
     public IEnumerable<Orders> CheckOneOrders { get;set; }
     public IEnumerable<Orders> CheckTwoOrders { get; set; }
}

Затем получите доступ к каждой таблице, если необходимо в представлении.

@model OrdersViewModel

Вам потребуется написать код для создания экземпляра и заполнения 2 свойств модели представления.

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