Model view controller MVC-相同的URL,多个视图

Model view controller MVC-相同的URL,多个视图,model-view-controller,Model View Controller,在MVC中,基于不同的用户角色,对同一个URL使用多个视图是否被认为是不好的做法?例如: 将为普通用户显示“普通”产品页面,并向以管理员身份登录的用户显示“增强”(产品统计、编辑标题的能力等)版本 如果这是坏习惯,为什么?如果可以的话,最好的实现方法是什么?2个单独的模板或1个分散在if..else中的模板 谢谢 在我看来,用户和管理员可以使用相同的url。真正的问题是用户的可用性。这对他们有什么影响吗?许多使用MVC的站点根据授权级别提供添加内容或链接 您使用的是什么框架和语言?如果您可以使用

在MVC中,基于不同的用户角色,对同一个URL使用多个视图是否被认为是不好的做法?例如: 将为普通用户显示“普通”产品页面,并向以管理员身份登录的用户显示“增强”(产品统计、编辑标题的能力等)版本

如果这是坏习惯,为什么?如果可以的话,最好的实现方法是什么?2个单独的模板或1个分散在if..else中的模板


谢谢

在我看来,用户和管理员可以使用相同的url。真正的问题是用户的可用性。这对他们有什么影响吗?许多使用MVC的站点根据授权级别提供添加内容或链接


您使用的是什么框架和语言?如果您可以使用类似于局部视图的内容,则可能不需要完全不同的模板。

我认为可以根据上下文修改视图;这种事经常发生。无论你是否做了假设。。否则,多个aspx文件实际上取决于差异的大小。两个备选方案:

1) 使用Html.RenderAction调用AdminController操作以嵌入内容,如果用户不是管理员,AdminController可以返回空结果

或者更好:


2) 根据用户的角色/状态使用不同的母版页。通过这种方式,您可以将用于将主机设置为actionfilter(动作过滤器)的逻辑拉出来,并执行一次,但在任何有意义的地方应用它。只需确保备用母版页与ContentPlaceholder ID的视图兼容。

如果页面不会有很大的不同(即,它们显示相同的数据,管理员可能会有更多数据),那么我会说将所有代码放在同一个文件中。如果可能,请使用基于角色的能力管理系统,以便您可以提出以下问题:

if can? :create, Users do
  ...
else
  ...
end

然后,设置您的能力,以便管理员和经理都可以创建用户。这样,您就不必担心用户是谁,只需担心用户可以做什么。

基本上,您所说的权限会导致不同的页面,这是一件非常常见的事情。想想Facebook上两个不同用户的默认登录页面

实现和其他任何东西一样:在可以重用的地方合并公共元素。如果..else和更复杂的差异属于不同的模板,那么简单的差异可能会出现