与两个视图共享一个动作

时间:2014-08-08 05:42:52

标签: asp.net-mvc

我正在一个需要多个用户类型使用的控制面板的网站上工作。我一直想知道是否可以制作具有不同布局的不同视图,但它们在操作中使用单一动作是相似的,这样我就不需要再次重写它们了?

例如,管理员和主管都可以修改员工详细信息,但管理员视图的布局与主管不同。我可以为每个视图编写不同的操作,但两个操作中的代码与执行相同操作时的代码完全相同。那么可以与许多观点共享一个动作吗?

2 个答案:

答案 0 :(得分:4)

你当然可以。但是,该方法取决于您如何确定要呈现的布局以及信息来自何处。最直接的方法是确定用户的类型(角色),并根据用户的角色,您可以在同一个操作方法中呈现特定的视图......

public ActionResult YOUR_ACTION()
{
    //do your processing
    Role role = GetCurrentUserRole();

    if(role.Name = "Admin")
        return View("ViewForAdmins");
    else if (role.Name = "Supervisor") 
        return View("ViewForSupervisors");
    else 
        return View("EveryoneElseView");    
}

答案 1 :(得分:-4)

也许您可以将员工详细信息放在部分视图中,并从主视图中调用RenderAction。