2

所以我正在创建一个有两个绑定的网站

routes.MapRoute(
  name: "Default", 
  url: "{controller}/{action}/{id}", 
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
  name: "DefaultAdmin",
  url: "Admin/{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

这个想法是我想让 EndUsers 访问普通页面(/account/login等),但只有网站的管理员部分(具有不同的布局)供管理员用户使用。

问题有点双重:-

  1. 就控制器而言,看起来 MVC 只是在 Controllers 文件夹中查找,有没有办法将 AdminControllers 和常规控制器分开以保持井井有条?

  2. 我想为管理员显示一个单独的“主视图”而不是常规,目前我只是使用_layout.cshtmlfrom_start.cshtml但我希望能够使用_layout.cshtml并且_adminLayout.cshtml不使用视图名称为每个视图添加前缀(如果不是那么我可以很容易地忍受这个)。

任何帮助都将不胜感激。

4

2 回答 2

3

您可以将控制器放置在程序集中的任何位置,只要它们是从System.Web.Mvc.Controller类派生的,它们将由路由逻辑标识。

您可以查看 MVC 中的“区域”以帮助满足您的特定需求。

于 2012-07-27T21:39:25.777 回答
2

这听起来像Areas在 MVC 中是你正在寻找的。

于 2012-07-27T21:44:13.683 回答