Таблица циклов по каждому элементу, сумма для каждого местоположения и общая сумма всех местоположений в asp.net MVC - PullRequest
0 голосов
/ 06 марта 2019

Я хочу рассчитать стоимость всех продуктов для каждого местоположения и общее количество всех мест вместе взятых.

, чтобы это выглядело так

  • местоположение 1

    • product1, количество, цена
    • product2, количество, цена
    • Общая стоимость всех продуктов местоположения 1
  • местоположение 2

    • product3, количество, цена
    • product4, количество, цена
    • Общая стоимость всех продуктов местоположения 2
  • местоположение 3

    • product1, количество, цена
    • product3, количество, цена
    • Общая стоимость всех продуктов местоположения 3
  • общая стоимость всех продуктов всех местоположений

Просмотр:

<div>

    @foreach (var location in ViewBag.Location)
    {
        <h3><u>@locatie.LocatieName</u></h3>

        <div>
            <table class="table">
                <tr>

                    <th>@Html.DisplayNameFor(model => model.Product)</th>
                    <th>@Html.DisplayNameFor(model => model.Quantity)</th>
                    <th>@Html.DisplayNameFor(model => model.Price)</th>


                </tr>


                @foreach (var product in Model)
                {
                    if (product.LocationId == location.LocationId)
                    {

                        <tr>
                            <td>@product.Product</td>
                            <td>@product.Quantity</td>
                            <td>@product.Price</td>

                        </tr>
                        @Model.Sum(i=>i.Price)


                    }


                }

            </table>

        </div>

    }

</div>

Контроллер:

public ActionResult Worth()
        {
            ViewBag.Location = db.Location.OrderBy(c => c.LocationName).ToList();
            return View(db.Product.Include(c => c.Location).ToList());
        }

но каким-то образом он только вычисляет сумму первого местоположения и повторяется в других таблицах.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

просто объявите двойное число во втором цикле:

вы можете сделать это следующим образом

<div>

@foreach (var location in ViewBag.Location)
{
    <h3><u>@locatie.LocatieName</u></h3>

    <div>
        <table class="table">
            <tr>
                 @{
                  double sumPrice = 0;
                  }
                <th>@Html.DisplayNameFor(model => model.Product)</th>
                <th>@Html.DisplayNameFor(model => model.Quantity)</th>
                <th>@Html.DisplayNameFor(model => model.Price)</th>

            </tr>


            @foreach (var product in Model)
            {
                if (product.LocationId == location.LocationId)
                {

                    <tr>
                        <td>@product.Product</td>
                        <td>@product.Quantity</td>
                        <td>@product.Price</td>
                          @sumPrice+= produck.Price;
                    </tr>
                    @Model.Sum(i=>i.Price)


                }


            }

        </table>
             <tr> <td> total price </td> <td> @sumPrice </td> </tr>
    </div>

}

0 голосов
/ 06 марта 2019

Таким образом, простое решение - просто выполнить вычисления в правильных местах:

@foreach (var location in ViewBag.Location)
{
    ...
    @foreach (var product in Model)
    {
    }
    // This filters products by current location, and sums up filtered products
    @Model.Where(product => product.LocationId == location.LocationId)
          .Sum(i => i.Price)
}

// This does not filter anything and just sum for all products
@Model.Sum(i => i.Price)

Однако подумайте, хотите ли вы пересмотреть модель вида.Вы выполняете некоторые нетривиальные манипуляции с данными, возможно, вам лучше сделать их в контроллере и добавить соответствующие поля в представление.

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