MVC5 Razor,显示相关表值

时间:2015-08-28 19:45:19

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

我正在使用AdminPortal,我有一个数据库设置:

User 1:N UserRole N:1 Role 1:N RolePage N:1 Page

因此,用户通过UserRole表连接到角色,并通过RolePage表将角色连接到特定页面。

我使用MVC5和实体框架来制作我的模型和控制器。

在我的UsersController中,我希望详细信息也显示角色,它目前没有。从这里,某人应该能够选择编辑,然后为特定用户添加/删除角色。

当我尝试使用现有的user.UserRoles时:

@Html.DisplayNameFor(model => model.UserRoles)

我得到了输出:

System.Data.Entity.DynamicProxies.Role_2928XXXXXXXXXXXXX

我希望看到分配给他们的角色列表(即管理员,销售人员等)。最好的方法是什么?

以下是我的控制器的详细信息部分:

// GET: Users/Details/5
public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    User user = db.Users.Find(id);
    if (user == null)
    {
        return HttpNotFound();
    }
    return View(user);
}

2 个答案:

答案 0 :(得分:0)

使用UserManager.GetRoles将返回用户的所有角色

ViewBag.RolesForThisUser = UserManager.GetRoles(user.Id);

答案 1 :(得分:0)

我在类似的帖子上找到了答案:

https://stackoverflow.com/a/23536667/3534314

基本上我必须创建一个视图模型来保存我的每个模型的实例,从那里我能够在一个视图中获得我需要的所有信息。