MVC - ViewModel



我需要创建一个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 
}

相关内容

  • 没有找到相关文章

最新更新