1

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

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

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

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

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

期待您的回复。

4

1 回答 1

2

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

@if (HttpContext.Current.User.IsInRole("admin")) {
    @Html.Partial("_StuffForAdmins")
}

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

编辑:另一种语法是:

 <div>
        @if (Context.User.IsInRole("admin"))
        {
            @Html.Partial("_StuffForAdmins")
        }
    </div>
于 2012-04-17T22:19:39.150 回答