Отображение данных модели представления из контроллера в представлении в ASP.NET Core - PullRequest
0 голосов
/ 26 октября 2018

Я хочу отобразить результаты запроса в виде Razor.

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

Класс Fuel:

public class Fuel
{
    public int FuelId { get; set; }
    public int FMonth{ get; set; }
    public int Year { get; set; }
}

Класс Location:

public class Location
{
    public int LocationId { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}

Теперь я объединяю обе таблицы, используя класс модели представления FuelLocation:

 public class FuelLocation
 {
    public Fuel Fuels { get; set; }
    public Location Locations { get; set; }       
 }

Вот метод действия в контроллере:

public ActionResult EmpDetails()
{
    var res = (from loc in _context.Locations
               join Fl in _context.Fuels on loc.Name equals Fl.Locationn
               select new FuelLocation
                       {
                           Fuels = Fl,
                           Locations = loc
                       }).GroupBy(c => c.Fuels.Locationn)
              .Select(g => new
              {
                  Location = g.Key,
                  Jan = g.Where(c => c.Fuels.FMonth == 1).Sum(c => c.Fuels.Sale),
                  Feb = g.Where(c => c.Fuels.FMonth == 2).Sum(c => c.Fuels.Sale),
                  March = g.Where(c => c.Fuels.FMonth == 3).Sum(c => c.Fuels.Sale)
              }).ToList();
}

Результат этого запроса:

выход

и я хочу показать это так

Name    | Jan       | Feb       | Mar   | Total
1       | 100       | 350       |  250  | 700
2       | 200       | 220       | 2150  | 2170

My Razor view:

 @model IList<COSAuthNew.Services.Generic.FuelLocation>
        <h2>Index</h2>
        <table class="table">
                <tr>
                    <th>LocationName</th>
                    <th>Jan</th>
                    <th>Feb</th>
                    <th>March</th>
                     <th>Total</th>
                </tr>
                @foreach (var item in Model)
                {
                    //Plz enter your solution 
                }

но я не получил должного результата, который хочу.

Спасибо

Ответы [ 2 ]

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

Для Razor View необходимо вернуть модель представления, которая содержит свойства Location и Jan.

  • Определите модель вида, как показано ниже:

     public class FuelLocationVM
     {
          public string Location { get; set; }
          public int Jan { get; set; }
          public int Feb { get; set; }
          public int March { get; set; }
     }
    
  • Возврат VM вместо аномального типа

        var res = (from loc in _context.Locations
           join Fl in _context.Fuels on loc.Name equals Fl.Locationn
           select new FuelLocation
                   {
                       Fuels = Fl,
                       Locations = loc
                   }).GroupBy(c => c.Fuels.Locationn)
          .Select(g => new FuelLocationVM
          {
              Location = g.Key,
              Jan = g.Where(c => c.Fuels.FMonth == 1).Sum(c => c.Fuels.Sale),
              Feb = g.Where(c => c.Fuels.FMonth == 2).Sum(c => c.Fuels.Sale),
              March = g.Where(c => c.Fuels.FMonth == 3).Sum(c => c.Fuels.Sale)
          }).ToList();
    
  • Эталонная виртуальная машина в виде бритвы

        @model IList<COSAuthNew.Services.Generic.FuelLocationVM>
    <h2>Index</h2>
    <table class="table">
            <tr>
                <th>LocationName</th>
                <th>Jan</th>
                <th>Feb</th>
                <th>March</th>
                 <th>Total</th>
            </tr>
            @foreach (var item in Model)
            {
                <td>@item.Location</td>
                <td>@item.Jan</td>
                <td>@item.Feb</td>
                <td>@item.March</td>
                <td>@(item.Jan + item.Feb + item.March)</td> 
            }
    
0 голосов
/ 26 октября 2018

Чтобы отобразить значения элемента, просто добавьте @ перед значением в тд-тэге.Затем вы можете суммировать значения в последнем столбце, используя @(val1 + val2..)

@model IList<COSAuthNew.Services.Generic.FuelLocation>
        <h2>Index</h2>
        <table class="table">
                <tr>
                    <th>LocationName</th>
                    <th>Jan</th>
                    <th>Feb</th>
                    <th>March</th>
                    <th>Total</th>
                </tr>
                @foreach (var item in Model)
                {
                    <td>@item.Location</td>
                    <td>@item.Jan</td>
                    <td>@item.Feb</td>
                    <td>@item.March</td>
                    <td>@(item.Jan + item.Feb + item.March)</td>
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...