如何在 asp.net mvc 3 应用程序中管理视图管理

Posted

技术标签:

【中文标题】如何在 asp.net mvc 3 应用程序中管理视图管理【英文标题】:How to manage view management inside a asp.net mvc 3 application 【发布时间】:2012-04-17 18:35:01 【问题描述】:

我不确定这是否适合我的问题,但我会试一试。

我们正在开始开发一种新产品,它将使用 asp.net mvc 3 razor 作为表示层。该应用程序有大约 7-8 个不同的角色,所有角色都有不同的视图来显示数据。 我在 NHibernate 的帮助下构建了一个不错的框架并实现了一些设计模式,因此应用程序的这一面将很容易调整和应用维护。

我希望表示层与我的框架一样具有适应性,这就是为什么我试图找出一种方法,让所有不同类型的角色的视图尽可能少,但功能齐全。您使用哪种实现方式根据最终用户的角色向其分发视图?

我考虑过使用 jquery 模板,但考虑到当前的视图可能性和剃刀语法,这听起来有点不必要,而不是首选的方式。

在开发此应用程序时我应该牢记的任何信息都会很好,想想,常见错误,最佳实践和建议等。

期待您的回复。

【问题讨论】:

你的问题似乎只是让我想起一百万个问题?忘记所有休眠的东西和情侣设计等,并重新编写您的问题以阐明您要实现的目标,因为老实说,您的问题似乎更像是评论或博客文章 我认为主要问题应该是:您使用什么样的实现来根据最终用户的角色将视图分发给他?你对其他东西的权利! 【参考方案1】:

减少视图数量的一种方法是结合部分视图使用IsInRole()(或等效的,如果您有自定义的东西)。在最简单的情况下,您可以拥有一个视图,该视图还根据特定角色在其中呈现部分视图。大致如下:

@if (HttpContext.Current.User.IsInRole("admin")) 
    @html.Partial("_StuffForAdmins")

根据您的情况,一些部分视图可以在多个不同角色之间共享,从而减少重复代码。所有角色都可以公开访问的用户界面元素可以直接放置在视图本身上,而无需进行角色检查。

编辑:另一种语法是:

 <div>
        @if (Context.User.IsInRole("admin"))
        
            @Html.Partial("_StuffForAdmins")
        
    </div>

【讨论】:

这可能是我的问题的答案。我将在我的原型中查找并实现它,看看它是如何工作的。感谢您的建议!

以上是关于如何在 asp.net mvc 3 应用程序中管理视图管理的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 3 应用程序中扩展 Windows 身份验证

asp.net mvc5 如何控制没有权限的页面不显示

ASP.NET Core 2.0 MVC 6. 如何管理每个视图的javascript文件?

如何在asp.net mvc 5中批准或拒绝管理员批准的用户端记录

我们如何使用 EF 在 ASP.Net MVC 应用程序中创建 3 层架构?

asp.net mvc 3:使用图像管理模型的最佳方法