试图理解MVC路由

本文关键字:MVC 路由 | 更新日期: 2023-09-27 18:00:54

我们有几个控制器希望分组在我们网站的子文件夹(Admin(中。我们会让主页在根级别。但对于这些页面,我们希望我们的网站路径是这样的:

www.domain.com/Admin/{controller}/{action}/{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.chtml

但我们收到"找不到资源"错误消息。

我也尝试过没有RoutePrefix,也尝试过使用RoutePrefix("Admin"(。

如果我把视图放在这里:''Views''SystemSecurity''Index.cshtml
并使用以下路径导航:www.domain.com/SystemSecurity/Index
页面加载,所以我知道控制器和页面正在工作。

我做错了什么?

试图理解MVC路由

我发现了MVC领域。(http://www.philliphaydon.com/2011/07/mvc-areas-routes-order-of-routes-matter/)

通过在我的项目中添加一个区域(右键单击项目名称,然后添加区域(,我可以更好地对代码进行分组。

我发现的许多页面要么没有提到区域,要么当提到时,只是顺便说一下,但它们没有解释它们。希望这能帮助其他人。