使用区域时的ASP.NET路由

时间:2015-03-24 23:47:27

标签: asp.net-mvc asp.net-mvc-5

在我的ASP.NET MVC 5应用程序中,我有一个名为Manage的区域。

我目前正在使用此区域的默认路线:

context.MapRoute(
                "Manage_default",
                "Manage/{controller}/{action}/{id}",
                new { controller="Home", action = "Index", id = UrlParameter.Optional }
            );

我遇到的问题是当对动作使用其他参数时,它们不受约束。例如,Sites控制器的MonthlyStats操作定义为public ActionResult MonthlyStats(int id, DateTime? month),但是当点击/Manage/Sites/MonthlyStats/138/?month=2015-02-01时,月份始终为空。

/ Sites / MonthlyStats /最近才被移动到管理区域,在此之前它完美地运行了。

在RouteDebugger中查看,在RouteData集合中永远不会出现month,因为我预期应该是(这里可能是错误的)。

enter image description here

1 个答案:

答案 0 :(得分:0)

确保:

  • 您在PTree.Reslink.WebUI.Area.Manage命名空间中有一个SiteController(确保套管匹配)。
  • 它是SiteController而不是Site s 控制器,因为看起来您的路线被解析为只有“Site”的单数名称。您确定要一直输入网址吗?
  • 班级和行动都是公开的。
  • 他们在Regions / Manage / Controllers文件夹中。
  • 看起来像datetime很麻烦,可能是文化特定的格式,尝试mm / dd / yyyy以及其中几种变体。事实上,情侣答案声称年/日的不同顺序表明它可能是特定于文化的:stackoverflow.com/questions/6177626 /

虽然路线没有将管理区域解析为路线数据,但似乎有点奇怪。您是直接访问URL还是单击ActionLink?验证您是否正在使用包含路径数据集合中的区域的操作链接。最好直接转到URL以验证它是否正常工作,然后对任何ActionLink进行故障排除。