在routes.maproute中设置url参数的查找值

时间:2013-12-17 18:49:31

标签: asp.net-mvc-4 asp.net-mvc-routing maproute

是否有一种简单的方法可以在route.maproute中定义查找值?

示例路线:

 routes.MapRoute(
              name: "example route", 
               url: "product/{subcat}", 
          defaults: new { controller = "Redirect", action = "ProcessPage"}
      );

其中:{subcat}只能是以下值:subcat1,subcat2,subcat3

我正在尝试将旧网站的重定向写入新网站(无法使用IIS),旧网站没有一致的网址,其中一些属于我的新网站的模式。我想避免为每个重定向编写一个路由。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来约束路线值:

routes.MapRoute(
    name: "example route", 
    url: "product/{subcat}", 
    defaults: new { controller = "Redirect", action = "ProcessPage"},
    constraints: new { subcat = @"^subcat\d*$ }
);

我在这里假设约束是“subcat”附加一个整数(这是我可以从你的问题中提取的最好的) - 修改它以满足你的要求。如果您需要一组明确的值,您可以将regex OR运算符与您接受的字符串列表一起使用:

@"^subcat1|subcat2|subcat3$"