基本上我怎么能得到这个:
sitename / Admin / Forum / Index与sitename / Forum / Index
背景:要学习MVC,我已经开始创建一个俗气的论坛应用程序。在了解MVC的任何内容之前,我刚刚使用默认的导向器结构,基本上就是这样:
(来源:byatool.com)
现在所有这些控制器/视图都处理管理员方面的事情。这一切都很好,花花公子,直到我开始处理非管理员方面的东西。现在,我对如何将当前设置传输到支持Admin和Non Admin的站点感到茫然。基本上我之前打的是:
sitename / Admin / Forum / Index - For Admin
sitename / Forum / Index - 适用于普通用户
正如您所看到的,论坛名称,因此论坛控制器将重叠,MVC不太喜欢这个。
我真的不喜欢拥有siteName / Forum / AdminIndex或siteName / ForumAdmin / Index即ForumAdminController,因为这似乎是一个奇怪的工作,并且不介意检查管理员/级别的用户禁止任何人进入该“文件夹”中的任何内容(缺少更好的单词)而不是管理员。 (我假设这将通过路线完成)
我真的希望有办法解决这个问题。
答案 0 :(得分:2)
我认为您的管理员或控制台Web应用程序应始终进入自己的项目。通过这种方式,您可以拥有更多控制权,如果您需要将其部署到Intranet设置,如果您需要隐藏主站点中的某些功能,等等。将这两个问题混合在一个站点下很少会成为一个好主意。该网站不断发展壮大。此外,管理站点很少受益于主应用程序的设计等。管理功能通常受益于更直接的布局,额外的屏幕,更高的安全性等。
想想http://console.sitename.com/forum/index。这更加清晰,仍然可以与您的论坛应用程序联系起来。这里的担忧非常分散。
答案 1 :(得分:1)
MVC的优点在于,您的URL不会像在ASP.NET Webforms中那样与静态资源绑定。考虑到这一点,您可以根据自己的喜好制作管理URL,并指向您喜欢的任何控制器,而不是创建一些复杂的目录结构。过去,将管理功能放在子文件夹中是有益的,因为您可以使用配置文件轻松锁定该文件夹,但现在不需要将视图与URL分开。
通常,我只需按照我喜欢的方式配置管理员路由并将其指向管理控制器即可处理。然后,控制器仅使用控制器类上的Authorize装饰器锁定到管理角色的用户。然后,这只是确保人们处于正确角色的问题。我的网址通常是“管理员/管理员”的效果。也许这有一些缺点,但到目前为止我还没有遇到任何问题。
答案 2 :(得分:0)
我已经完成了Bit和Andrew两种选择,我认为在这种情况下我将管理员的东西放在一个单独的区域中,或者将视图捆绑在一个管理文件夹中以便更好地进行概述。另一方面,当您在论坛和管理站点中重复使用视图时,Bit的替代方案非常好,但功能略有不同,具体取决于授权规则。