我们想要在我们网站上的子文件夹(Admin)中分组几个控制器。我们希望主页位于根级别。但是对于这些页面,我们希望我们的站点路径是这样的:
www.domain.com/Admin/ {控制器} / {行动} / {ID}
我已经像这样设置了RouteConfig.cs文件:
routes.MapRoute
(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Submission", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute
(
name: "Admin",
url: "Admin/{controller}/{action}/{id}",
defaults: new { controller = "SystemSecurity", action = "Index", id = UrlParameter.Optional }
);
我已经设置了一个这样的控制器:
[RoutePrefix("Admin/SystemSecurity")]
public class SystemSecurityController : Controller
{
private MkpContext _db = new MkpContext();
// GET: SystemSecurity
public ActionResult Index()
{
var roles = _db.Role.Select(r => r);
return View(roles.ToList());
}
}
在我们的解决方案中,控制器的路径是:\ Controllers \ Admin \ SystemSecurityController.cs
视图的路径是:\ Views \ Admin \ SystemSecurity \ Index.cshtml
但是我们收到了“无法找到资源”错误消息。
我也尝试过没有RoutePrefix,还有RoutePrefix(“Admin”)。
如果我把视图放在这里:\ Views \ SystemSecurity \ Index.cshtml
并按此路径导航:www.domain.com/SystemSecurity/Index
页面加载,所以我知道控制器和页面正在工作。
我做错了什么?
答案 0 :(得分:1)
我发现了MVC领域。 (http://www.philliphaydon.com/2011/07/mvc-areas-routes-order-of-routes-matter/)
通过向项目添加区域(右键单击项目名称,然后添加 - 区域),我可以更好地对代码进行分组。
我发现的许多页面要么没有提到区域,要么在做的时候,它已经过去了,但它们并没有解释它们。希望这会对其他人有所帮助。