我在MVC中使用路由。但是当我使用与路由URL相同的其他URL时,它将重定向到相同的操作

时间:2016-04-26 05:01:06

标签: asp.net-mvc

 routes.MapRoute(
     "GetProductBySubcategory",      // Route name
     "{category}/{SubCategoryName}", // URL with parameters
     new { controller = "Product", action = "GetProductBySubCategoryName" 
});

这是我正常工作的路线。 但是当我使用类似localhost:12345/Admin/Login的网址时,它会使用路由网址并重定向到GetProductBySubCategoryName操作。 实际上我使用@ Url.RouteUrl()方法来调用路由。这工作得很好。但是当像账户/注册这样的其他网址意味着只有两个密钥重定向到路由中给出的操作时。 我正在使用其他路线

我使用的所有路线如下:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "GetProductByCategory",                                          
        "{category}",
        new { controller = "Product", action = "GetProductByCategoryName" }
    );

    routes.MapRoute(
       "GetProductBySubcategory",
       "{category}/{SubCategoryName}",
       new { controller = "Product", action = "GetProductBySubCategoryName" }
    );

    routes.MapRoute(
        "ProductByNameRoute",
        "{category}/{subcategory}/{style}/{productName}",
        new { controller = "Product", action = "ProductDetails" }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

这是我的route.config文件。 我无法呼叫登录链接,登录链接全部转到路由网址。

实际上我想要路由网址,如果我点击getproductbycategory url将域/类别,如果我点击getproductbysubcategory url将是domain / category / subcategory。 请帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

如果您正在使用MVC 5,则可以通过属性路由轻松实现此目的,而无需修改路由表。

Attribute Routing in MVC 5