Использование SqlQuery в ASP.NET MVC - PullRequest
0 голосов
/ 14 сентября 2018

У меня в контроллере есть запрос, который выбирает два столбца из базы данных, и я сохраняю его в переменной, чтобы вернуть его в представление. Я отображаю данные с помощью таблицы. Ниже приведен код для этого:

Контроллер:

public ActionResult DisplayData(LabourTimeModel ltm)
    {

        LabourTimeEntities db = new LabourTimeEntities();
        string query = "Select ProcessItemName, sum(DATEDIFF(MINUTE, LaborTimeOut,LaborTimeIn)) AS 'TimeSpent' FROM LaborTime group by ProcessItemName";

        var data = db.Database.SqlQuery<LabourTimeModel>(query).ToList();

        return View(data);
    }

Вид:

@model List<LabourTime.Models.LabourTimeModel>

@{
    ViewBag.Title = "Labour Time - Home";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

    <h2><centre>Display Data</h2><hr />

            <table>
                  <tr>
                     <th colspan="2">Time Spent For Process Item</th>
                  </tr>
                 <tr>
                   <th style="padding:0 15px 0 15px;"> Process Item Name </th>
                      <th style="padding:0 15px 0 15px;"> Time Spent </th>
                   </tr>
                @foreach (LabourTime.Models.LabourTimeModel obj in Model)
                    {
                  <tr>
                   <td style="padding:0 15px 0 15px;">@obj.processItemName.ToString()</td>
                   <td style="padding:0 15px 0 15px;">@obj.TimeSpent</td>
                    </tr>
                    }
           </table>

Это дает мне вывод, который я хочу. Однако я хочу написать еще один запрос, передать его в то же представление и отобразить еще одну таблицу, подобную этой. Как мне этого добиться? Любая помощь приветствуется, спасибо!

Вывод, который я получаю сейчас:

Column1     Column2
   A          20
   B          10
   C          45

Я хочу, чтобы под этим отображалась еще одна таблица.

Контроллер, который я пробовал:

    public ActionResult DisplayData(LabourTimeModel ltm)
    {

        LabourTimeEntities db = new LabourTimeEntities();
        string query = "Select ProcessItemName, sum(DATEDIFF(MINUTE, LaborTimeOut,LaborTimeIn)) AS 'TimeSpent' FROM LaborTime group by ProcessItemName";

string query1 = "ONE MORE QUERY"

        var data = db.Database.SqlQuery<LabourTimeModel>(query).ToList();
        var data1 = db.Database.SqlQuery<LabourTimeModel>(query1).ToList();

        return View(data);
    }

Но я не могу передать два результата, используя обратный просмотр. Я застрял здесь.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы также можете использовать анонимные типы для отправки обратно на просмотр

   public ActionResult DisplayData(LabourTimeModel ltm)
{

    LabourTimeEntities db = new LabourTimeEntities();
    string query = "Select ProcessItemName, sum(DATEDIFF(MINUTE, LaborTimeOut,LaborTimeIn)) AS 'TimeSpent' FROM LaborTime group by ProcessItemName";

    string query1 = "ONE MORE QUERY"

    var data = db.Database.SqlQuery<LabourTimeModel>(query).ToList();
    var data1 = db.Database.SqlQuery<LabourTimeModel>(query1).ToList();

    dynamic viewModel = new ExpandoObject();
    viewModel.Query1= data;
    viewModel.Query2=data1;
    return View(viewModel);
}

На ваш взгляд используйте это как

@Model.Query1.ColumnName
0 голосов
/ 14 сентября 2018

Вам необходимо создать модель представления (класс с двумя списками) и передать этот объект в представление.

var model = new MyModel {
   Data1 = your first query,
   Data2 = your second query
}

return View(model);

По виду:

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