我在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操作,则存在将其保存在控制器中的策略。