MVC - 相同的URL,多个视图

Ama*_*ati 6 model-view-controller

基于不同的用户角色,在MVC中为同一个URL提供多个视图被认为是不好的做法吗?例如:http: //www.domain.com/ViewProductID/123将为普通用户显示"正常"产品页面,它将显示"增强"(产品统计数据,编辑标题的能力等)版本有人以管理员身份登录.

如果这是不好的做法,为什么?如果没关系,实施它的最佳方法是什么?2个单独的模板或1个模板散布着if..else?

谢谢!

Pau*_*aul 2

我认为根据上下文修改视图是可以的;这种事经常发生。无论您执行 if.. else 还是多个 aspx 文件,实际上取决于差异的程度。几个替代选项:

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

或更好:

2)根据用户的角色/状态使用不同的母版页。通过这种方式,您可以将用于设置主控的逻辑拉入他喜欢的操作过滤器中,并执行一次,但将其应用到任何有意义的地方。只需确保备用母版页与 contentplaceholderId 方面的视图兼容即可。