Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我正在MVC中使用路由。但当我使用与路由url相同的其他url时,它会重定向到相同的操作_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 我正在MVC中使用路由。但当我使用与路由url相同的其他url时,它会重定向到相同的操作

Asp.net mvc 我正在MVC中使用路由。但当我使用与路由url相同的其他url时,它会重定向到相同的操作,asp.net-mvc,Asp.net Mvc,这是我的路线,运行良好。 但是当我使用类似于localhost:12345/Admin/Login的url时,它会使用路由url并重定向到GetProductBySubCategoryName操作。 实际上,我正在使用@Url.RouteUrl()方法来调用路由。这很有效。但当其他url(如Account/Register)表示只有两个键时,会重定向到路由中给定的操作。 我正在使用其他路线 我使用的所有路线如下所示: routes.MapRoute( "GetProductBySub

这是我的路线,运行良好。 但是当我使用类似于
localhost:12345/Admin/Login
的url时,它会使用路由url并重定向到
GetProductBySubCategoryName
操作。 实际上,我正在使用@Url.RouteUrl()方法来调用路由。这很有效。但当其他url(如Account/Register)表示只有两个键时,会重定向到路由中给定的操作。 我正在使用其他路线

我使用的所有路线如下所示:

 routes.MapRoute(
     "GetProductBySubcategory",      // Route name
     "{category}/{SubCategoryName}", // URL with parameters
     new { controller = "Product", action = "GetProductBySubCategoryName" 
});
这是我的route.config文件。 我无法调用登录链接,登录链接全部转到路由url

实际上,我想路由url,就像我点击getproductbycategory url将是domain/category,点击getproductbysubcategory url将是domain/category/subcategory。
请帮我找到解决办法

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


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


这正是这条路线所说的-请注意,在你所谓的带有参数的
URL中,你没有
{action}
{controller}
,这并不容易,因为这条路线将包罗万象-如果看不到其他路线,你很难给出建议你的第一条路线与任何一段匹配。您的第二个匹配任何具有2段的内容。您需要使您的路由特定,以便它们可以匹配,例如,
routes.MapRoute(“GetProductByCategory”、“Product/{category}”、new{controller=“Product”、action=“GetProductByCategoryName”})URL中,你没有
{action}
{controller}
,这并不容易,因为这条路线将包罗万象-如果看不到其他路线,你很难给出建议你的第一条路线与一个区段匹配。您的第二个匹配任何具有2段的内容。您需要使您的路由特定,以便它们可以匹配,例如,
routes.MapRoute(“GetProductByCategory”、“Product/{category}”、new{controller=“Product”、action=“GetProductByCategoryName”})以便可以识别它们。
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 }
    );
}