ASP.NET MVC路由:URL落入错误的路由
我正在从事一个非常普通的mvc项目,我有三条不同的路线: 按id显示产品的路线ASP.NET MVC路由:URL落入错误的路由,asp.net,asp.net-mvc,asp.net-mvc-4,routing,url-routing,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Routing,Url Routing,我正在从事一个非常普通的mvc项目,我有三条不同的路线: 按id显示产品的路线 routes.MapRoute( "get-by-id", "{controller}/{id}", new { action = "GetById" }, new { id = @"\d+" } ); 按类别划分的展示产品路线 routes.MapRoute(
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+" }
);
默认路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
结论:我希望/products/create请求属于默认路由(因为我希望将“create”呈现为一个操作),而不是“get by category”路由(因为它将“create”作为一个字符串)。使用它将帮助您调试路由,以确定何时调用哪些路由。在asp.net mvc上工作时,我经常使用的工具之一
顺便说一句,看看你的路线,没有一条路线可以映射到产品/创建。在这种情况下,它只会将您带到默认路线。您需要指定一个路由,该路由将映射到产品控制器,如果您想要创建一个操作,则需要有“Products/Create”,其操作指向Get by id action
routes.MapRoute(
"get-by-id",
"{controller}/Create/{id}",
new { action = "GetById" },
new { id = @"\d+" }
);
很抱歉,我在帖子中犯了一些错误,现在请随时提供帮助。您的实际路线应该是-Product/GetById/Create-目前它正在寻找一个假定为“Create”的产品/Create是Action的名称。当创建产品后的单词时,我在get by category路由约束中使用正则表达式传递到下一个路由。。。