我们正在重建旧网站到新的MVC网站,我想将旧网址重定向到新网址。
旧网址的构建方式如下/p-{productid}-{productname}.aspx
但是productname参数也可能包含连字符。所以网址可以是/p-123-product-name.aspx
。
如果我将此规则添加到mvc RouteCollection,则第一个参数值将为:
productid = 123-product
productname = name
有没有办法让productid参数'不贪心'?
答案 0 :(得分:0)
您可以为路线添加约束,并使用正则表达式指定ID。假设您要使用名为“products”的控制器,并且视图名为ShowProdcut,并且id包含3个或更多数字,您的路径可能如下所示:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
name: "Products",
defaults: new {controller = "Products", action = "ShowProduct"},
url: "Products/p-{productId}-{productName}",
constraints: new {productId= @"\d{3,}"}
);
}
很明显,如果你的id更复杂,你需要一个不同的正则表达式。