2014-02-05 36 views
0

我正在进入一个非常常见的MVC项目,我有三个diferents路线:由IDASP.NET MVC路由:URL是落入错误的路线

路线的显示器产品

 routes.MapRoute(
      "get-by-id", 
      "{controller}/{id}", 
      new { action = "GetById" }, 
      new { id = @"\d+" } 
      ); 

路线用于显示产品按类别

 routes.MapRoute(
      "get-by-category", 
      "{controller}/{category}", 
      new { action = "GetByCategory" }, 
      new { category = @"\w+" } 
      ); 

Defau LT路线

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

Conslusion:我想/产品/创建请求落入默认路线(因为我想要“创造”被渲染为一个动作),而不是进入按类别路由(,因为它将“创建”为字符串)。

回答

1

使用Route Debuger它将帮助您调试您的路由以确定何时调用哪些路由。在工作于asp.net mvc时,我总是努力工作的工具之一。

顺便说一句 - 看看你的路线没有路线那里映射到产品/创建。在这种情况下,它只是将你带到默认路线。您需要指定要映射到产品控制器的路线,并且如果您想要执行创建操作,则需要具有“产品/创建”功能,其操作指向按位取得动作

routes.MapRoute(
     "get-by-id", 
     "{controller}/Create/{id}", 
     new { action = "GetById" }, 
     new { id = @"\d+" } 
     ); 
+0

抱歉,我在帖子上犯了一些错误,现在随时提供帮助。 –

+0

你真实的路线应该看起来像 - 产品/ GetById /创建 - 目前它正在寻找一个产品/创建它假设“创建”是行动的名称 – Gjohn

+0

我使用正则表达式在逐类创建Word产品后,路由约束传递到下一个路由... –