![]() |
1
1
我认为最干净的方法是创建一个自定义路由处理程序,供默认路由使用。然后,如果控制器名称是您的默认控制器名称,您可以分离出要使用的控制器,在下面的示例中,它是:home。然后检查用户是否是管理员,并使用您想要使用的控制器处理请求。 代码如下:
希望这有帮助。 |
![]() |
2
1
为了简单起见,在您的homecontroller索引方法(或您使用的任何默认控制器)中,您可以放置一些这样的代码,然后来自adminindex视图或索引视图的链接可以在用户开始浏览您的站点时将其发送到适当的区域-这样,您就有了一个共享控制器,其他控制器可以特定于用户类型。
user.isadministrator调用当然是伪代码-如果用户是管理员用户,请用您正在使用的任何方法替换它 |
![]() |
3
0
如果不想使用同一个控制器,请首先为每个项目设置单独的控制器和视图-mysweetapp.com/admin和mysweetapp.com/normaluser。 然后,您可以根据特定用户的登录角色,通过默认控制器将其重定向到此页面。
|
![]() |
4
0
你可能想考虑的是领域。这将允许您为每个区域设置单独的控制器。然后允许基于角色或您希望的任何内容访问这些区域。 这将为您提供诸如'/admin/controller/action'、'/users/controller/action'等路由。“模式”按名称空间分隔所有控制器,并处理好路由。轻松分离母版页等。 它不会给你(可能会混淆,imo)“/”和“/admin/”,在管理员用户看来是一样的,但它会让你把内容和控制器分开。 您所描述的内容可能会为每个控制器带来大量的方法,而MVC/REST人群通常不喜欢这种方法。这并不可怕,但也不是最佳实践。 你可以在这个博客上读到有关区域的信息 here . 谷歌“ASP.NET MVC区域”获取更多信息。 --------编辑---------- 展开一点: 如果没有自定义路由或其他一些恶作剧,操作将通过URL映射到控制器。因此,如果您想让所有管理操作和视图保持不同,但是在根URL上,以及正常的用户操作,这将导致一个必须处理所有这些操作的大控制器,或者一些奇怪的“如果这个角色,这个视图;如果这个角色,那个视图”在每个操作中都会发生一些荒谬的事情。有点乱。 同样,默认视图引擎也会根据URL查找视图。 这意味着你所有的视图都将放在一个丑陋的大目录中,目录中充满了各种奇怪的、名字相似但行为不同的视图。 简而言之,这将成为一个潜在的可怕的维护噩梦,这取决于应用程序的复杂性。 |
![]() |
5
0
可以创建一个从DefaultControllerFactory扩展并重写CreateController的类吗?
然后在您的应用程序中\u start():
|
![]() |
Andrus · 如何在Linux中阅读期刊 7 月前 |
![]() |
Miranda · 读取xml文件时路径错误中有非法字符 7 月前 |
![]() |
Primdonm · 如何将自定义列表中的字符串值格式化为货币格式? 1 年前 |
|
Kiryl · Sitecore中自己的控制器 1 年前 |
|
Farid · 如何从数据库中填充Resource.resx文件值? 1 年前 |