繁体   English   中英

在视图中显示两个模型?

[英]Display two model in a View?

我在控制器中有两个模型

public ActionResult Search(int? id)
{
    var yearSummary = from ti in db.TrainingRecordDBSet
                      join si in db.StaffInfoDBSet
                          on ti.StaffId equals si.StaffId
                      group ti by ti.Year into g
                      select new {
                          Year = g.Key,
                          SHour = g.Sum(ti => ti.Hour)
                      };

    var trainingQ = from t in db.TrainingRecordDBSet.Include("StaffInfo")
                    where t.StaffId == id orderby t.StaffId, t.Tid
                    select t;

    var list = trainingQ.ToList();

    ViewBag.yearSummary = yearSummary;

    return View(list);
}

我想同时显示数据库中的“ trainingQ”和数据库中的“ yearSummary”,其中“ traingingQ”已经成功,但是“ yearSummary”,我不知道如何显示,亲爱的朋友们告诉我该怎么办?

这是视图的编码,并且不起作用

@var yearSummary = (dynamic) ViewBag.yearSummary;
@foreach (var item in Model)
{
    <tr>
        <td>
            @*var yearSummary = (StaffInfoEditViewModel) ViewBag.yearSummary;*@
            @{
                Html.DisplayFor(modelItem => item.Shour);
            }
        </td>
        <td>
            @{
                Html.DisplayFor(modelItem => item.Shour);
            }
        </td>
    </tr>
}
</table>

非常感谢你!!

创建一个类(模型)来保存视图所需的数据。

public class SearchVM
{
  public IEnumerable<YearSummary> YearSummary { get; set; }
  public IEnumerable<TrainingQ> Training { get; set; }
}

public ActionResult Search(int? id)
{
    var model = new SearchVM
    {
      YearSummary = (from ti in db.TrainingRecordDBSet
                      join si in db.StaffInfoDBSet
                           on ti.StaffId equals si.StaffId
                      group ti by ti.Year into g
                      select new {
                          Year = g.Key,
                          SHour = g.Sum(ti => ti.Hour)
                      })
        .AsEnumerable()
        .Select(ys => new YearSummary { Year = ys.YEar, SHour = ys.Shour {)
        .ToList(),

      TrainingQ = (from t in db.TrainingRecordDBSet.Include("StaffInfo")
                    where t.StaffId == id orderby t.StaffId, t.Tid
                    select t)
        .ToList()
    };

    return View(model);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM