1

動的ルーティングが必要です。したがって、私のルートは次のようになります。

{UserName}
{UserName}/Edit/{id}
{UserName}/Delete/{id}

ユーザーがユーザーコントローラーにルーティングされる場所。しかし、私はまだ次のようなコントロールへのルートを維持したいと考えています:

{Controller}/Edit/{id}
{Controller}/Delete/{id}

したがって、基本的には、編集削除のために OrdersController と呼ばれる物理コントローラーに直接送信したいのですが、誰かが /jdoe/ に移動すると、ユーザーコントローラーに送信されます。

ルートでこれを行うにはどうすればよいですか?

4

1 に答える 1

1

複数のルートを作成し、それらを適切な順序に保つ必要があります

// one route for Users
routes.MapRoute("Users",
     "{username}/{action}/{id}",
     new { controller = "Users", action = "Index", username = string.Empty, id = UrlParameter.Optional },
     new { id = @"\d+" }
);
// one route for everything else
routes.MapRoute("Default",
     "{controller}/{action}/{id}",
     new { controller = "Home", action = "Index", id = UrlParameter.Optional},
     new { id = @"\d+" }
);

上記のように「本当に」簡単ではありませんが、それが要点です。ユーザー名を検証するには、 RouteConstraintも追加する必要があります。

最後に、ユーザー名パラメーターを使用している場合、なぜ ID が必要なのですか? ちょっとした考え。


余談
ですが、StackOverflow のユーザー セクションを見ると、ルーティングが次のようになっていることがわかります。

  • users/{id}/{username}
  • ユーザー/{id}/編集
  • ユーザー/{id}/削除

個人的には、これを達成するための作業ははるかに少ないと言えます...しかし、それは私だけです。

于 2012-07-21T20:43:21.493 に答える