用户处于两个角色时如何切换布局(例如管理员和服务用户)

时间:2015-09-22 14:24:59

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

我想根据用户在两个角色中切换布局,例如一个是管理员,也是一个服务用户,当用户登录时我在我的页面上有下拉列表,在用户登录时我有用户登录时选择“切换到用户模式”当用户以服务用户身份登录时,作为管理员和“切换到管理模式”,

3 个答案:

答案 0 :(得分:0)

由于我还不能发表评论,请参阅我最近的回答。非常相似的情况。

https://stackoverflow.com/a/32701659/3266690

答案 1 :(得分:0)

如果您需要能够单击按钮切换布局,则有两个选项:

  1. 使按钮成为当前页面的链接,并向查询字符串添加内容,例如?mode=user。然后,您可以在视图中切换布局(或_ViewStart.cshtml),如:

    Layout = "~/Views/Shared/_Layout.cshtml";
    if (Request["mode"] == "user")
    {
        Layout = "~/Views/Shared/_UserLayout.cshtml";
    }
    
  2. 让按钮转到URL或将表单发​​布到由操作提供的URL,然后该操作将设置会话变量。然后,您可以根据会话变量在视图中分支布局,类似于上面的代码。

  3. 选项2更持久。使用选项1,您必须将链接传递给链接的查询字符串参数,否则布局将切换回来。但是,如果您只希望开关影响当前视图,那么这可能是您想要的。通过设置会话变量,布局选择将一直持续到会话到期或您将其更改为其他内容。

答案 2 :(得分:0)

我猜您对每个角色都有不同的操作和视图,因此我建议您将它们分成不同的区域。 通过这种方式,您可以实现一些目标:

  1. 您的解决方案构造得更好
  2. 每个区域负责1个角色<​​/ li>
  3. 每个区域都有自己的网址(例如:site.com/Admin,site.com/User)
  4. 每个区域都有其控制器/视图/布局
  5. 您可以在区域之间共享控制器/视图/资源
  6. 所以现在你可以有一些全局布局,用户可以在其中选择她的模式。而你所要做的就是将她重定向到正确的区域控制器!