我正在处理一个图像查看器,所以我有一个名为Viewer的控制器,当我传递给它routeValues时,它的URL就像这样:http://www.mywebsite.com/Viewer?category=1&image=2
以下是用于访问此页面的链接:
@Url.Action("Index", new { category = p.Category, image = p.Image })但是我希望有这样的网址:http://www.mywebsite.com/Viewer/1/2
我曾尝试在RouteConfig类的RegisterRoutes方法中使用一些技巧,但无法获得前面的结果。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Viewer",
url: "{controller}/{action}/{category}-{image}",
defaults: new { controller = "Viewer", action = "Index", category = 1, image = 1 }
);
}
}有人知道我可以在哪里做这个吗?
非常感谢!
发布于 2012-12-25 18:23:54
您需要将更具体的路由放在默认路由之前,因为路由的评估顺序与您声明它们的顺序相同:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Viewer",
url: "{controller}/{action}/{category}/{image}",
defaults: new { controller = "Viewer", action = "Index", category = 1, image = 1 }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}https://stackoverflow.com/questions/14029583
复制相似问题