Asp.net mvc MVC 3问题与一条路线
我对一条路线有一个问题: 这是我的global.asax:Asp.net mvc MVC 3问题与一条路线,asp.net-mvc,Asp.net Mvc,我对一条路线有一个问题: 这是我的global.asax: routes.MapRoute("TagsHome", "belleza-y-{tagnameurl}/", new { controller = "Tag", action = "Detail" }); routes.MapRoute("CategoryHome", "{categorynameurl}/", new { controller = "Categories", action = "Index" }); routes.
routes.MapRoute("TagsHome", "belleza-y-{tagnameurl}/", new { controller = "Tag", action = "Detail" });
routes.MapRoute("CategoryHome", "{categorynameurl}/", new { controller = "Categories", action = "Index" });
routes.MapRoute("HomePage", "", new { controller = "Home", action = "Index" });
我的问题是当我在http://localhost:4097/
MVC使用的路线如下:
routes.MapRoute("CategoryHome", "{categorynameurl}/", new { controller = "Categories", action = "Index" });
但应在主页上使用:
routes.MapRoute("HomePage", "", new { controller = "Home", action = "Index" });
您知道它选择此路由的原因吗?匹配的路由将按照它们出现的顺序进行选择 移动
routes.MapRoute(“主页”,新的{controller=“Home”,action=“Index”})代码>
向上,使它在上面
routes.MapRoute(“CategoryHome”,“categorynameurl}/”,新的{controller=“Categories”,action=“Index”})代码>匹配的路线按其出现的顺序进行选择
移动
routes.MapRoute(“主页”,新的{controller=“Home”,action=“Index”})代码>
向上,使它在上面
routes.MapRoute(“CategoryHome”,“categorynameurl}/”,新的{controller=“Categories”,action=“Index”})代码>路线按添加顺序选择
将主页路径移动到CategoryHome路径上方
如果您的路由再次出现问题,Phill Haack可以使用此路由调试器工具:
另一个路由调试器存在于中。您应该尝试一个非常好的插件:路由是按添加顺序选择的
将主页路径移动到CategoryHome路径上方
如果您的路由再次出现问题,Phill Haack可以使用此路由调试器工具:
另一个路由调试器存在于中。您应该尝试一个非常好的插件:最后,我解决了为categorynameurl参数添加约束的问题:
routes.MapRoute("CategoryHome", "{categorynameurl}/", new { controller = "Categories", action = "Index" },new {categorynameurl = @"[a-z0-9\-]+$" });
最后,我解决了为categorynameurl参数添加约束的问题:
routes.MapRoute("CategoryHome", "{categorynameurl}/", new { controller = "Categories", action = "Index" },new {categorynameurl = @"[a-z0-9\-]+$" });
我觉得这不对劲。除非将{categorynameurl}参数指定为可选或通配符,否则它不应与路由匹配
以以下控制器为例:
public class HomeController : Controller
{
public ActionResult Index() {
return Content("index");
}
public ActionResult Foo(string foo) {
return Content("foo");
}
}
以及以下路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("", "{foo}", new { controller = "Home", action = "Foo" });
routes.MapRoute("", "", new { controller = "Home", action = "index" });
}
http://localhost/
与我们的空url路径->主页/索引匹配
http://localhost/abc123
与我们的foo路线->主页/foo匹配
@geertvdc提到了一些调试路由的好工具。你也应该测试它们。我写了一篇关于测试入站路由匹配和出站url生成的文章。我觉得这不合适。除非将{categorynameurl}参数指定为可选或通配符,否则它不应与路由匹配
以以下控制器为例:
public class HomeController : Controller
{
public ActionResult Index() {
return Content("index");
}
public ActionResult Foo(string foo) {
return Content("foo");
}
}
以及以下路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("", "{foo}", new { controller = "Home", action = "Foo" });
routes.MapRoute("", "", new { controller = "Home", action = "index" });
}
http://localhost/
与我们的空url路径->主页/索引匹配
http://localhost/abc123
与我们的foo路线->主页/foo匹配
@geertvdc提到了一些调试路由的好工具。你也应该测试它们。我写了一篇关于测试入站路由匹配和出站url生成的文章