gpt4 book ai didi

c# - MVC3 : One controller, 多个路由

转载 作者:行者123 更新时间:2023-11-30 18:40:23 26 4
gpt4 key购买 nike

我有一个包含多个区域的 MVC3 应用程序。每个区域都是一个不同的应用程序模块,但它们共享一个共同的功能——报告。因此,我在根区域中编写了一个报告 Controller 和 View ,并希望使用路由将它们附加到所有区域。此方法适用于 MVC1,但后来我升级到 MVC3,路由停止工作并始终返回 404。

每个模块/区域的路由结构都是相似的:

Module1/Reports.aspx/
Module1/PreportView.aspx/{id}
Module1/{controller}/{action}
Module1/{controller}/{action}/{id}

模块的路由注册通过以下方法进行:

protected override void RegisterRoutes(AreaRegistrationContext context, string arearoot, string defaultControllerName){
context.MapRoute(arearoot + "Reports", arearoot + "/Reports.aspx",
new { action = "Index", controller = "Reports" }, new string[] { "Controllers" }); //this should work in MVC3 according to docs

context.MapRoute(arearoot + "ReportView", arearoot + "/ReportView.aspx/{id}",
new { action = "Show", controller = "Controllers.ReportsController" });//this method worked in MVC1

context.MapRoute(arearoot,
arearoot + "/{controller}.aspx/{action}",
new { controller = defaultControllerName, action = "Index" },
GetRouteNamespaces());

context.MapRoute(arearoot + "ItemSpecific",
arearoot + "/{controller}.aspx/{action}/{id}");
}

protected string[] GetRouteNamespaces() {
return new string[] { "Controllers.Module1" }; //returns proper namespace for each module
}

我尝试附加 RouteDebugger(由于 .aspx 扩展而失败)和 Glimpse,但它们都没有给我任何问题,路由表似乎没问题,但是当我尝试导航到报告时,我总是收到 404 错误代码。

有什么想法吗?

最佳答案

  • 请检查您所在地区目录中的地区注册路线。
    • 同时在调试期间获取所有已注册路由的列表。如果您正在使用,路由会在 ASP.net MVC 2 或更高版本中注册区域。
      • 您还必须在注册路线时指定区域。 (与您指定 Controller 的方式相同)

关于c# - MVC3 : One controller, 多个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com