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 }
);
}