我在Mvc中建立一个项目,遇到了一些麻烦。之前,我已经无数次地使用过Viewmodel,以及Controller-View之间的关系,但是这个问题让我很困惑。

我想将联接的表传递给视图,并且我不确定如何执行此操作。

这是查询的代码

var query1 =
from r in db.Requests
group r by r.RequestNum into rsg
select new
{
    rsg,
    TechHrsSum = (from rr in rsg select rr.RequestSteps.Select ( rs => rs.Procedure.TechHrs).Sum(h => h)),
    ProcessHrsSum = (from rr in rsg select rr.RequestSteps.Select ( rs => rs.Procedure.ProcessHrs).Sum(h => h))

};


我知道这是匿名的,但我无法理解如何传递数据,因此它在视图中是动态且可用的。谢谢!

最佳答案

一个非常简单的想法是将模型更改为具有其他表中信息的“ NotMapped”列(假设一对一关系):因此,在模型中:

    [NotMapped]
    public string myStringVar { get; set; }


然后在控制器中:

        ourTableModel.myStringVar  = ""; // default

        if (ourTableModel.ourTableModel_key != null)
        {
            var ourOtherTable = db.otherTable.Find(ourTableModel.ourTableModel_key);
            if (ourOtherTable != null)
            {
                ourTableModel.myStringVar = ourOtherTable.stringInOtherTable;
            }
        }


只要这是R(检索或读取)操作,就可以像在任何其他视图中一样容易地在视图中显示它;相反,如果有人正在执行CUD操作,则存在将其保存在控制器中的策略。

09-27 12:08