Asp.net mvc 控制器中带有子文件夹的路由问题

Asp.net mvc 控制器中带有子文件夹的路由问题,asp.net-mvc,model-view-controller,asp.net-mvc-5,Asp.net Mvc,Model View Controller,Asp.net Mvc 5,我们已决定使用控制器文件夹中的子文件夹。我们所有的控制器都正常工作,但由于某种原因,当我们添加一个{id}时,它没有进入控制器方法 路线: routes.MapRoute( name: "Maintenance", url: "Maintenance/{controller}/{action}/{id}", defaults: new { controller = "TargetAudience", action = "In

我们已决定使用控制器文件夹中的子文件夹。我们所有的控制器都正常工作,但由于某种原因,当我们添加一个{id}时,它没有进入控制器方法

路线:

routes.MapRoute(
            name: "Maintenance",
            url: "Maintenance/{controller}/{action}/{id}",
            defaults: new { controller = "TargetAudience", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "IstPhenix.Controllers.Maintenance" }
        );
[ClaimsAuthorize(PhenixPermissions = "ConsultCategory")]
    public ActionResult Edit(int id)
    {
        ViewBag.CategoryId = id;

        return View("~/Views/Maintenance/Category/Edit.cshtml", id);
    }

    [ClaimsAuthorize(PhenixPermissions = "ConsultCategory")]
    public ActionResult Index()
    {
        return View("~/Views/Maintenance/Category/Index.cshtml");
    }
这与URL匹配,如 /维护/类别/索引

但是每当我们添加类似{id}的/Maintenance/Category/Edit/123456789时,就找不到控制器方法

CategoryController.cs:

routes.MapRoute(
            name: "Maintenance",
            url: "Maintenance/{controller}/{action}/{id}",
            defaults: new { controller = "TargetAudience", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "IstPhenix.Controllers.Maintenance" }
        );
[ClaimsAuthorize(PhenixPermissions = "ConsultCategory")]
    public ActionResult Edit(int id)
    {
        ViewBag.CategoryId = id;

        return View("~/Views/Maintenance/Category/Edit.cshtml", id);
    }

    [ClaimsAuthorize(PhenixPermissions = "ConsultCategory")]
    public ActionResult Index()
    {
        return View("~/Views/Maintenance/Category/Index.cshtml");
    }
值得一提的是,我们在RouteConfig的末尾还有一个默认路由:

  routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "IstPhenix.Controllers.Enduser", "IstPhenix.Controllers.Maintenance", "IstPhenix.Controllers.Security" }
        );
然后,当我们省略子文件夹时,以下URL起作用:

  • /类别/索引
  • /类别/编辑/123456789
知道为什么我有子文件夹和id时URL与路由不匹配吗

我错过了什么


tnx

如果添加了
路由
属性:

[Route("Maintenance/Category/Edit/{id}")]
[ClaimsAuthorize(PhenixPermissions = "ConsultCategory")]
public ActionResult Edit(int id)
{
    ViewBag.CategoryId = id;

    return View("~/Views/Maintenance/Category/Edit.cshtml", id);
}

这将明确给出行动的路线。

嗨,谢谢你的回答,但不幸的是,我已经尝试过了,但没有成功:(