0

私は画像ビューアに取り組んでいるので、名前の付いたコントローラーがViewerあり、それを渡すとrouteValues、次のような URL で渡されます: http://www.mywebsite.com/Viewer?category=1&image=2

このページにアクセスするためのリンクは次のとおりです。

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

しかし、私はこの URL が好きです: http://www.mywebsite.com/Viewer/1/2

RegisterRoutesクラスのメソッドでいくつかのトリックを実行しようとしましたRouteConfigが、前の結果を取得できません。

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

誰も私がこれを行うことができる場所を知っていますか?

どうもありがとう !

4

1 に答える 1

3

ルートは宣言したのと同じ順序で評価されるため、デフォルトルートの前に、より具体的なルートを配置する必要があります。

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 }
        );
    }
}
于 2012-12-25T10:23:53.587 に答える