MVC 5:如何根据ID

时间:2017-06-15 02:55:24

标签: c# entity-framework asp.net-mvc-5

我不确定我是否正确地表达了这个问题。在.NET 4.5.1和Entity FrameWork 6.1.3上使用MVC 5。我从一个Oracle数据库开始。在Visual Studio中,我基于名为Missions的表在项目开始时构建了模型,视图和控件。任务有几个字段,分别是用户ID字段(添加者,修改者等)。这些ID列在名为Crew的表中,同时包含用户名和其他信息。我想在Mission的所有视图中显示用户名而不是ID。我是否手动创建一个指向Crew表的新模型,或者有没有办法让VS为我创建它,就像我在项目开始时能够做到的那样?如果我在Crew表上不需要任何CRUD操作,我甚至需要这样做吗?如何使用Modified By ID加入Crew ID?感谢。

目前我的视图看起来像这样

@Html.DisplayFor(modelItem => item.MODIFIED_BY)

我想要这样的东西

@Html.DisplayFor(modelItem => item.MODIFIED_BY.Full_Name)

更新:这是我最终做的事情。不确定这是否完全是倒退的做事方式,但它对我有用。我开始将新的查找字段添加到我的模型中,如下所示:

[StringLength(2000)]
[DisplayName("Modified By")]
[NotMapped]
public string MODIFIED_BY_FULL_NAME { get; set; }

同样在模型中,我像这样更新了MODIFY_BY属性的代码

private decimal? modified_by;
[DisplayName("Modified By")]
public decimal? MODIFIED_BY
{
    get
    {
        return modified_by;
    }
    set
    {
        modified_by = value;
        if (value != null)
        {
          Mission db = new Mission();
          var name = db.CREW.First(n => n.CREW_ID == value);
          if (name != null)
          {
              MODIFIED_BY_FULL_NAME = name.CREW_FULL_NAME;
          }
        }
     }
  }

因此,每当设置了MODIFIED_BY属性时,我都会进行查找并填充MODIFIED_BY_FULL_NAME属性。然后在我的视图中,我只使用新属性以此

显示全名
@Html.DisplayFor(modelItem => item.MODIFIED_BY_FULL_NAME)

这里的一个重大缺点就是我需要做的所有工作需要花费很长时间。此外,由于这些新属性未映射,我无法使用OrderBy甚至搜索它们。我必须先将值转换回ID值。这就是为什么我在想我做错了什么。

0 个答案:

没有答案