一个动作的多个模式

时间:2018-03-14 11:53:43

标签: c# asp.net-mvc routing

我正在研究MVC 5路由。我想只为不同的URL使用1个映射;

例如,如果用户写为Prodcut,Producto和Urun,如下所示:

  

www.blabla.com/Product/1

     

www.blabla.com/Urun/1

     

www.blabla.com/Producto/1

...然后会发送此请求同样的产品动作​​。

这可以像下面的代码那样定义吗?

routes.MapRoute(
            "Page",
            "Product/{id} | Producto/{id} | Urun/{id}", //This row not working
            defaults: new { controller = "Product", action = "ShowProduct" , id = UrlParameter.Optional},
            constraints: new { id = @"^[a-zA-Z0-9ğüşöçİĞÜŞÖÇ_-.]+$" }
        );

1 个答案:

答案 0 :(得分:0)

更好的是创建多个路线,但您可以使用约束

    routes.MapRoute(
        "Page",
        "{name}/{id},
        defaults: new {
           controller = "Product", 
           action = "ShowProduct",
           id = UrlParameter.Optional
        },
        constraints: new {
           id = @"^[a-zA-Z0-9ğüşöçİĞÜŞÖÇ_-.]+$",
           name = "Product|Producto|Urun"
        }
    );