使用区域时的ASP.NET路由

问题描述:

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

我目前使用的是默认的路由这一领域:

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

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

/网站/ MonthlyStats /只是最近才移动了管理区域,它在此之前完美运行。

看着RouteDebugger,month从来没有出现在RouteData集合中,因为我预计应该是(可能在这里是错误的)。

enter image description here

+0

这有时候很有用,它需要一点点来理解调试器的输出,但可以成为解决路由问题的一个很好的工具:http://haacked.com/archive/2008/03/13/url-routing- debugger.aspx/ – AaronLS 2015-03-24 23:56:28

+0

此外,您还应该显示控制器声明,控制器或操作方法的任何属性以及控制器所在的文件夹结构,以排除可能存在的错误或错别字。 – AaronLS 2015-03-24 23:57:46

+0

还有任何其他MapRoute调用的调用顺序,因为有时候您的区域路线可能会被忽略,因为具有“更宽”定义的另一条路线将首先捕获该URL。 – AaronLS 2015-03-24 23:58:34

确保:

  • 你在PTree.Reslink.WebUI.Area.Manage命名空间SiteController(确保外壳匹配)。
  • 它是SiteController而不是网站s控制器,因为它出现您的路线被解析与一个单一的名称只是“网站”。你确定你一直在输入网址吗?
  • 这个课程和行动都是公开的。
  • 它们位于Areas/Manage/Controllers文件夹中。
  • 看起来像日期时间很麻烦,可能是文化特定的格式,尝试mm/dd/yyyy以及这些变化的情侣。事实上,夫妇的答案声称不同的年/日排序表明它可能是文化特定的:*.com/questions/6177626/

这似乎有点奇怪,路线没有解析出管理区域进入路线数据虽然。您是直接访问URL还是点击ActionLink?验证您是否使用了包含路线数据收集区域的操作链接。最好先直接访问URL以验证它是否正常工作,然后解决任何ActionLink问题。

+0

SitesController位于名称页面PTree.Reslink.WebUI.Areas.Manage.Controllers中。如上所述,控制器被定义为复数。 所有内容都是公开的,只要没有应用月份过滤器,视图实际上就会正确显示。 该文件夹是正确的。 – 2015-03-25 00:11:00

+0

我直接去了网址,并有相同的问题。 – 2015-03-25 00:14:29

+0

好的,我现在在你的问题中看到一个不同的图像... – AaronLS 2015-03-25 00:18:19