Asp.net mvc 当您将Index指定为操作时,@Url.Action为什么不输出Index?
当您将Index指定为操作时,@Url.Action为什么不输出Index 我试图使用razor@URL.Action(“Index”,“Admin”)输出一个URL,但是输出是错误的。结果是路由认为/Admin是一个类别,并被错误的路由捕获 我使用的路线是Asp.net mvc 当您将Index指定为操作时,@Url.Action为什么不输出Index?,asp.net-mvc,routing,Asp.net Mvc,Routing,当您将Index指定为操作时,@Url.Action为什么不输出Index 我试图使用razor@URL.Action(“Index”,“Admin”)输出一个URL,但是输出是错误的。结果是路由认为/Admin是一个类别,并被错误的路由捕获 我使用的路线是 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
null,
"Page{page}",
new { Controller = "Photo", action="List" , category = (string)null },
new { page = @"\d+" }
);
routes.MapRoute(
null,
"{category}",
new { Controller = "Photo", action = "List", page=1 }
);
routes.MapRoute(
null,
"{category}/Page{page}",
new { Controller = "Photo", action = "List"},
new { page = @"\d+" }
);
// Default MVC route (fallback)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(null, "{controller}/{action}");
}
我通过添加两条新路线解决了这个问题
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AdminIndex", // Route name
"Admin", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Admin", // Route name
"Admin/Page{page}", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
routes.MapRoute(
null,
"Page{page}",
new { Controller = "Photo", action="List" , category = (string)null },
new { page = @"\d+" }
);
routes.MapRoute(
null,
"{category}",
new { Controller = "Photo", action = "List", page=1 }
);
routes.MapRoute(
null,
"{category}/Page{page}",
new { Controller = "Photo", action = "List"},
new { page = @"\d+" }
);
//Default MVC route(fallback)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(null, "{controller}/{action}");
}
我通过添加两条新路线解决了这个问题
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AdminIndex", // Route name
"Admin", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Admin", // Route name
"Admin/Page{page}", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
routes.MapRoute(
null,
"Page{page}",
new { Controller = "Photo", action="List" , category = (string)null },
new { page = @"\d+" }
);
routes.MapRoute(
null,
"{category}",
new { Controller = "Photo", action = "List", page=1 }
);
routes.MapRoute(
null,
"{category}/Page{page}",
new { Controller = "Photo", action = "List"},
new { page = @"\d+" }
);
//Default MVC route(fallback)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(null, "{controller}/{action}");
}
这是因为您的默认路线
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
当创建操作url
时,它将看到您的默认路径,因此您的路径将是Admin/{action}
,因为您的操作与default
操作相同,所以它将忽略在url中写入它,并且如果您仍然希望显示索引
则将路由顺序更改为
routes.MapRoute(null, "{controller}/{action}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
这是因为您的默认路线
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
当创建操作url
时,它将看到您的默认路径,因此您的路径将是Admin/{action}
,因为您的操作与default
操作相同,所以它将忽略在url中写入它,并且如果您仍然希望显示索引
则将路由顺序更改为
routes.MapRoute(null, "{controller}/{action}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "App", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);