C# 在使用EF 5和MVC 4的相关表格中未获得结果

C# 在使用EF 5和MVC 4的相关表格中未获得结果,c#,entity-framework,asp.net-mvc-4,entity-relationship,C#,Entity Framework,Asp.net Mvc 4,Entity Relationship,C#/ASP.NET的全新功能 我有两个表:Administrators和AdministratorRights。在Administrators表中,每个管理员都有一个AdministratorRightSID。这是我的管理员类(型号): 这是我的控制器: public ActionResult Index() { return View(db.administrators.ToList()); } 这是我的观点(剃刀): @foreach(模型中的变量项){ @DisplayFor(

C#/ASP.NET的全新功能

我有两个表:Administrators和AdministratorRights。在Administrators表中,每个管理员都有一个AdministratorRightSID。这是我的管理员类(型号):

这是我的控制器:

public ActionResult Index()
{
    return View(db.administrators.ToList());
}
这是我的观点(剃刀):

@foreach(模型中的变量项){
@DisplayFor(modelItem=>item.RightsLevel)
@DisplayFor(modelItem=>item.UserName)
@DisplayFor(modelItem=>item.LastName)
@DisplayFor(modelItem=>item.FirstName)
@DisplayFor(modelItem=>item.StandardID)
@ActionLink(“编辑”,“编辑”,新的{id=item.AdministratorID})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.AdministratorID})|
@ActionLink(“删除”,“删除”,新的{id=item.AdministratorID})
}

除了视图中的item.RightsLevel之外,所有内容都会显示。我试图让它显示名称而不是ID(系统管理员,而不是“1”)。我并不感到惊讶,因为我还没有告诉它要看哪个专栏,但问题是,我不知道在哪里做。我猜我的模型是不正确的,因为我怀疑所有这些逻辑都应该发生在那里

这取决于您的管理员权限表,以及您有哪些字段。好消息是,您可以在DisplayFor helper中转到更高的级别,让它提取正确的字段:

@Html.DisplayFor(modelItem=>item.RightsLevel.RightsLevelName)


其中
RightsLevelName
是您试图显示的字段的实际名称。

在哪里定义了“1”和“管理员”之间的映射?@paul,它在管理员权限表中定义。您是否在LINQ查询中包含
d管理员权限?()@paul,很抱歉你失去了我。我真的对LINQ一无所知,但我认为EF是LINQ的替代品,所以我是否使用LINQ?我甚至不知道这个问题会在哪里。嗯。不要使用db.administrators.ToList()
试试
db.administrators.Include(“管理员权限”).ToList()
,这是个好消息!我不知道。修正了这个问题,但是仍然没有得到任何关于该列的信息。你有任何异常吗?没有。只是一个应该有数据的空白点。你从数据库中得到信息了吗?尝试将
db.administrators.ToList()
放在一个单独的变量中,然后查看是否正在填充AdministratorRight。要想知道如何做,需要我提出另一个SO问题。如果你能给我指个地方,告诉我如何检查我的查询是否带回数据,那将非常有用。
public ActionResult Index()
{
    return View(db.administrators.ToList());
}
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.RightsLevel)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LastName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.FirstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StandardID)
        </td>
        <td>
            @Html.ActionLink("Edit", "edit", new { id=item.AdministratorID }) |
            @Html.ActionLink("Details", "details", new { id=item.AdministratorID }) |
            @Html.ActionLink("Delete", "delete", new { id=item.AdministratorID })
        </td>
    </tr>
}