【发布时间】:2011-12-12 20:41:39
【问题描述】:
我想让我在输入时能够访问我的管理页面:
www.sitename.com/admin
这在 ASP.NET mvc3 中可行吗?
我决定采用该地区的方法。但是它似乎还没有工作。
我已经创建了一个管理区域并更新了管理区域注册中的路线。它看起来像这样:
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new string[] { "skylearn.Areas.Admin.Controllers" }
);
但是,如果我转到我的 url localhost:1337/admin,我的 HomeController 服务的位于我的 HOME 文件夹中的索引文件似乎不会加载。这些文件夹和控制器也位于管理区域内。
任何想法为什么会发生这种情况?
【问题讨论】:
-
您可以创建一个管理员“区域”,以便管理员的所有功能都包含在一个部分中。区域注册会将 /admin/{controller}/{action}/{id} 注册为该区域的默认路由。您在管理区域中的默认“Home”控制器将为 /admin/ 和 /admin/home 的请求提供服务,就像默认 Home 控制器将处理 / 和 /home 的请求一样
-
是的,但是已经有这样不同的区域了。我希望管理页面能够自行定位
-
您可以在 global.asax 中创建自定义路由,以便将 /admin/* 路径下不同 URL 的请求映射到不同的控件/操作(如果您必须这样做)。我强烈建议重构您的代码以创建一个区域(请参阅asp.net/mvc/videos/mvc-2/how-do-i/aspnet-mvc-2-areas)并将所有相关的管理功能放在管理区域内。这将在您的网站上创建功能的逻辑细分。
-
ive 实际上决定采用区域方法。但即使我像他在他的视频中那样创建了该区域,它似乎也不起作用
-
请更具体一些。你必须告诉我们什么是行不通的。在您的 Area 文件夹中创建了一个 AreaRegistration 文件,例如:AdminAreaRegistration。它具有注册为您所在区域提供服务的路线的代码: context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new {controller = "Dashboard", action = "Index", id = UrlParameter.Optional} , 新字符串 [] { "MyWeb.Areas.Admin.Controllers" } );
标签: asp.net-mvc-3 url routes area