2

我在我的 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 }
);
4

0 回答 0