URL重写在我的asp.net MVC网站

本文关键字:net MVC 网站 asp 我的 重写 URL | 更新日期: 2023-09-27 17:49:33

我正在一个图像查看器上工作,所以我有一个名为Viewer的控制器,当我传递它routeValues时,它在URL中传递如下:http://www.mywebsite.com/Viewer?category=1&图像= 2

这是进入本页的链接:

@Url.Action("Index", new { category = p.Category, image = p.Image })

但是我确实喜欢这个URL: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 }
        );
    }
}

有谁知道我可以在哪里做这个吗?

URL重写在我的asp.net MVC网站

你需要把你更具体的路由放在默认路由之前,因为这些路由的求值顺序和你声明它们的顺序是一样的:

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