Asp.net mvc 控制器中带有子文件夹的路由问题
我们已决定使用控制器文件夹中的子文件夹。我们所有的控制器都正常工作,但由于某种原因,当我们添加一个{id}时,它没有进入控制器方法 路线: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
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
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);
}
这将明确给出行动的路线。嗨,谢谢你的回答,但不幸的是,我已经尝试过了,但没有成功:(