C# 仅参数路由始终被触发MVC3
我有两条非常简单的路线C# 仅参数路由始终被触发MVC3,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我有两条非常简单的路线 routes.MapRoute( "post", // Route name postPage + "/{slug}", // URL with parameters new { controller = "Home", action = "Article" } // Parameter defaults ); routes.MapRoute(
routes.MapRoute(
"post", // Route name
postPage + "/{slug}", // URL with parameters
new { controller = "Home", action = "Article" } // Parameter defaults
);
routes.MapRoute(
"page", // Route name
"{slug}", // URL with parameters
new { controller = "Home", action = "Page", slug = homePage} // Parameter defaults
);
这是我的控制器逻辑
public ActionResult Article(string slug)
{
return View(repo.GetPost(slug));
}
public ActionResult Page(string slug)
{
if (slug.ToLower() == MetaData.PostsPage.ToLower())
return View("listPosts", repo.GetAllPosts());
else
return View("page", repo.GetPage(slug));
}
主页和后期页面是根据数据库中的值设置的。允许用户定义默认页面以及显示帖子的页面
添加名为“Admin”的区域时出现我的问题。我在RouteTable中添加了一个控制器
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
现在,当用户访问Admin/Account/Logon时,页面可以正常加载,但我的调试器仍然尝试进入主控制器和页面操作。但是RouteDebugger说它与当前的请求不匹配。我对如何解决这个问题感到困惑
RouteDebugger屏幕截图:
调试器进入my HomeControler页面结果:实际上问题是,区域路由覆盖了全局路由,为了区分这两个路由,在adminaregistration.cs文件的context.maprote方法中设置了区域控制器的相关命名空间。i、 e
context.MapRoute(
"admin_default",
"admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
null,
new string[] { "MVCApplication1.Areas.admin.Controllers" }
);
我发现了这个问题
我有一个favicon.ico设置在我的网站的主要区域,但不是管理区域。
因此,当我进入管理区时,浏览器向favicon.ico发出请求,该请求通过该路径获取。这就是为什么我的路线在RoutedBugger中看起来很好,因为它们是
谢谢你的帮助,昆丹 我将其添加到我的admin_默认设置中,但它仍在尝试在我的主控制器中运行我的页面操作中的代码