我在我的 mvc Web 应用程序中添加了一条新路由,但它没有按预期工作。我希望有人可以帮助我弄清楚它应该在列表中的哪个位置,也许应该为它定义哪些默认值和/或约束(在 RouteConfig.cs 中)。
所需的路线如下所示:
/controller/id/slug/action
例如 mydomain.com/products/10/product-name/reviews
我试图像这样定义这条路线,并尝试将其列为列出的第一、第二和第三条路线:
routes.MapRoute(
name: "AlternateRoute",
url: "{controller}/{id}/{slug}/{action}",
defaults: null,
constraints: new { id = @"\d+", slug = @"[\w\-\d+]*" }
);
发生的事情是在我添加上述路线并浏览到类似的页面/products/10/product-name
- 以前类似于 /products/create 的 url 看起来像 /products/10/product-name/create (但仅在该页面上)。
我仅有的其他路线是这 3 条(在我的 routeConfig 文件中定义):
/控制器/ID/蛞蝓
routes.MapRoute(
name: "DefaultSlugRoute",
url: "{controller}/{id}/{slug}",
defaults: new { action = "Details", slug = "" },
constraints: new { id = @"\d+", slug = @"[\w\-\d+]*" }
);
/控制器/动作/年/月
routes.MapRoute(
name: "MonthlyArchiveRoute",
url: "{controller}/{action}/{year}/{month}",
defaults: new { controller = "Blog", action = "Archives", year = UrlParameter.Optional, month = UrlParameter.Optional },
constraints: new { year = @"\d{4}", month = @"\d{2}" }
);
/controller/action/id(标准的包含一个新的 mvc 项目)
routes.MapRoute(
name: "DefaultRoute",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);