如何从具有两个模型的对象获取模型值

本文关键字:模型 两个 对象 获取 | 更新日期: 2023-09-27 18:32:37

在下面的 linq 查询中,var 查询是一个包含两个模型的对象。我是 asp.net MVC4的新手,如何在我的视图类中使用对象中的模型。var 查询通过 ViewBag.Message 概念从控制器传递到 view。请帮忙。

 var query = (from F in dataContext.flightobj
                     join FS in dataContext.flightscheduleobj.Where(FS => FS.FlightScheduleID == selectedID) on F.FlightID equals FS.FlightID
                     select new
                     {                             
                         F,FS
                     }).ToList();

如何从具有两个模型的对象获取模型值

为什么你不组合你的模型,你不在你的视图边写你的查询。

public class UserView
{
public User User{get;set;}
public List<Messages> Messages{get;set;}
}

然后

return View(new UserView(){ User = user, Messages = message});

在视图中:

Model.User;
Model.Messages;

2 种解决方案:

  1. 创建强类型视图,这样您就可以使用 Model 或 @Model 访问模型。之后。您将看到您的属性

  2. 不是强类型
  3. ,但你没有任何来自 VS 的智能(也不是强类型)

您可以创建一个特定的视图模型,然后将其传递给强类型视图(您可以使用智能感知),但如果这不是一个选项,或者您只是不想这样做,请查看此处以获取使用动态做事方式的说明。

我的建议始终是使用视图模型。让您的生活更轻松。:-)

我发现使用已通过 ViewBag 传递到视图中的复杂对象非常困难,因此我怀疑将 var 查询作为模型而不是 ViewBag 对象传递到视图中会好得多。

几乎可以肯定的是,您不能在视图中显式使用 flightobj 或 flightscheduleobj,尽管您可以使用联接中显示的任一模型中的列。您可能希望编写一个仅用于视图的模型,因为这样做可以帮助您清楚地了解哪些数据可用于视图,并且它将提供一个很好的强类型模型,以便在您处理视图时提供一些智能感知。