1

以下に示す 2 つの非常によく似た ASP.NET MVC ルートがあります。

2 つのルートを組み合わせて、(1) 「logs/email/」へのリクエストが EmailLogsController に送信され、「logs/user/」へのリクエストが UserLogsController に送信されるように条件ステートメントを配置する方法はありますか?

// URL: /areax/logs/email/
// URL: /areax/logs/email/details/51
// URL: /areax/logs/email/details/117
context.MapRouteLowercase(
    "AreaX.Log.Email",
    "areax/logs/email/{action}/{id}",
    new
    {
        controller = "EmailLogs",
        action = "Index",
        id = UrlParameter.Optional
    },
    new[] { ControllerNamespaces.AreaX }
);

// URL: /areax/logs/user/
// URL: /areax/logs/user/details/1
// URL: /areax/logs/user/details/10
context.MapRouteLowercase(
    "AreaX.Log.User",
    "areax/logs/user/{action}/{id}",
    new
    {
        controller = "UserLogs",
        action = "Index",
        id = UrlParameter.Optional
    },
    new[] { ControllerNamespaces.AreaX }
);

現状では、あまり DRY には見えません。

4

1 に答える 1

2

コントローラーの名前を変更できる場合 (ログ サフィックスを削除)、 {controller} キーワードを使用してみてください。

    context.MapRouteLowercase(
    "AreaX.Log.Email",
    "areax/logs/{controller}/{action}/{id}",
    new
    {
        action = "Index",
        id = UrlParameter.Optional
    },
    new[] { ControllerNamespaces.AreaX }
);
于 2013-02-25T10:51:00.793 に答える