2015-11-11 4 views
1

Как я могу суммировать значения при просмотре MVC? Я хочу суммировать все KwotaOplaty записей, которые теперь отображаются. Обратите внимание, что я использую ПОИСК (на контроллере), поэтому, когда я просматриваю конкретные записи, я хочу их суммировать.Как я могу суммировать значения при просмотре MVC?

Контроллер:

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*@ 
+0

просуммировать их в контроллере и проход значение для представления (как свойство в вашем v iew, или как свойство «ViewBag') –

ответ

3

Вы должны быть в состоянии, что с помощью метода Sum и положить значение результата в значении ViewBag и ссылаться на него, используя Razor. Это должно быть что-то вроде этого:

В контроллере

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

В представлении

@ViewBag.Total 

Не забудьте включить

using System.Linq; 
+0

Такое простое решение ... Хех спасибо – DiPix

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

Не работает :) но @Frankely Diaz resloved – DiPix

+0

@Piter да вам действительно не нужен помощник дисплея .. вы можете просто вывести сумма – JamieD77