如何在MVC视图中对值进行求和?

时间:2015-11-11 20:57:45

标签: asp.net-mvc database search view sum

如何在MVC视图中对值进行求和? 我想总结现在显示的所有 KwotaOplaty 记录。 请注意,我正在使用SEARCHING(在控制器上),因此当我搜索特定记录时,我想将它们全部加起来。

控制器:

public ActionResult Index(string oplataTyp, string szukajRej)
        {
            var TypLista = new List<RodzajOplaty>();
            var TypWyszukaj = from d in db.Oplaty orderby d.RodzajOplaty select d.RodzajOplaty;
            TypLista.AddRange(TypWyszukaj.Distinct());
            ViewBag.oplataTyp = new SelectList(TypLista);


            var oplaty = from p in db.Oplaty select p;

            RodzajOplaty RodzajOplaty;

            if (Enum.TryParse<RodzajOplaty>(oplataTyp, out RodzajOplaty))
            {
                oplaty = oplaty.Where(x => x.RodzajOplaty == RodzajOplaty);
            }


            if (!String.IsNullOrEmpty(szukajRej))
            {
                oplaty = oplaty.Where(s => s.TablicaRejstracyjna.Contains(szukajRej));
            }

            return View(oplaty.ToList());
        }

查看:

    @model IEnumerable<AutoMonit.Models.Oplata>

    <h2>Zestawienie opłat pojazdów</h2>

    <p>
        @Html.ActionLink("Utwórz", "Create")
    </p>

    @*@using (Html.BeginForm())
    {
        <div>Numer rejestracyjny: </div>
        <div>@Html.TextBox("NumerRej")</div>
        <input type="submit" value="Szukaj" />
    }*@

    @using (Html.BeginForm("Index", "Oplatas", FormMethod.Get))
    {
        <p>
            Rodzaj oplaty: @Html.DropDownList("oplataTyp", "Wszystkie")<br />
           Numer rejestracyjny: @Html.TextBox("szukajRej") <br />
            <input type="submit" value="Szukaj" />
        </p>
    }

    <br />
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.TablicaRejstracyjna)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Pojazd.Marka)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.DataOplaty)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.PrzebiegOplaty)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.RodzajOplaty)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.KwotaOplaty)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.DodatkoweInformacjeOplaty)
            </th>
            <th></th>
        </tr>

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.TablicaRejstracyjna)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Pojazd.Marka)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.DataOplaty)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.PrzebiegOplaty)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.RodzajOplaty)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.KwotaOplaty)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.DodatkoweInformacjeOplaty)
            </td>
            <td>
                @Html.ActionLink("Edytuj", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Szczegóły", "Details", new { id=item.ID }) |
                @Html.ActionLink("Usuń", "Delete", new { id=item.ID })
            </td>
        </tr>
    }

    </table>

    <hr />
    <h2>Suma kosztów:</h2>
@*Here i want to display sum*@

2 个答案:

答案 0 :(得分:4)

您应该能够使用Sum方法并将结果值放入ViewBag值并使用Razor引用它。它应该是这样的:

在控制器

ViewBag.Total = yourCollection.Sum(x => x.ThePropertyYouWantToSum);

在视图中

@ViewBag.Total

请记住包含

using System.Linq;

答案 1 :(得分:1)

@Model.Sum(b => b.KwotaOplaty)