Razor - 访问异物的属性

时间:2013-01-04 10:59:21

标签: asp.net-mvc entity-framework razor asp.net-mvc-4

此问题涉及带有实体框架的MVC4项目(数据库优先)

我将“公司”对象的(EF)集合传递给视图。

我需要在每个“公司”对象中显示存储为int(外键)的“主要用户”的名称

我能够像这样得到PrimaryUserID:

@foreach (var item in Model)
{
      <div>@item.PrimaryUserID</div>     
}

但我无法弄清楚如何从ID访问PrimaryUser对象?

有没有办法在不将包含PrimaryUser对象的自定义模型传递给我的视图的情况下执行此操作?

非常感谢任何帮助!

//编辑 - 这就是我目前将集合传递给我的视图的方式

   public ActionResult Installers(int id = 0)
    {
        CompanyType installer = db.CompanyTypes.Single(ct => ct.Description == "Installer");

        return View(installer.Companies.ToList());
    }

2 个答案:

答案 0 :(得分:0)

您的EDMX中的用户表是否设置了导航属性(大概是您的)?通常情况下,如果设置了<div>@item.PrimaryUser.Name</div>,您就可以执行此操作。

答案 1 :(得分:0)

您可以在模型中使用导航属性。

确保您已在EF查询中包含该属性。 (这称为“急切加载”)

public ActionResult Installers(int id = 0)
{
    CompanyType installer =
      db.CompanyTypes
        .Include( ct => ct.Companies.Select( c => c.PrimaryUser ) )
        .Single( ct => ct.Description == "Installer" );

    return View( installer.Companies.ToList() );
}

然后只需访问标记中的属性:

<div>@item.PrimaryUser.Name</div>