我需要创建一个linq语句,它结合了两个表,并将其发送给视图。
我需要为此创建一个ViewModel吗?
输出如下
表1。供应商表1。VendorName表二。地址
这取决于你的结果类型。
如果你返回一个动态对象一个匿名类型,那么你不能把它直接放到ViewBag中(参见:在ViewBag中填充匿名类型导致模型绑定问题)。但如果你要返回强类型的东西,你可以直接把它放到ViewBag中而不用模型。
也就是说,我总是倾向于使用强类型模型!
是你应该使用视图模型,因为如果你想发送多个表,你可以使用ViewBag或类似的viewdata[],这是错误的等。因为ViewBag是动态类型,它不能被发送到有2个表的视图例如,如果你这样做
ViewBag.Workers=db.Workers.Join(idb.AspNetUsers, e => e.UserID, i => i.Id, (e, i) => new { UserName = i.UserName, SBIN = e.SBIN, }).ToList();
当你在View
中使用这个viewbag时,你会得到错误500<span>@ViewBag.Workers.Anything</span>
即使在这个例子中,你应该使用for-each,你仍然得到错误,因为ViewBag是内部的所以你可以在这个问题的控制器中使用类似的东西
var Workers=db.Workers.Join(idb.AspNetUsers, e => e.UserID, i => i.Id, (e, i) => new WorkerViewCardModelcs{ UserName = i.UserName, SBIN = e.SBIN, }).ToList();
return PartialView("_WorkerCard", Workers);
和Don't for get在View或Partial View中使用@model
@model IEnumerable<FinalProject.ViewModels.WorkerViewCardModelcs>
@foreach (var item in Model)
{
What ever logic you wish
}