0

現在、MemberControllerとAdmincontrollerの2つのコントローラーがあり、以下のように使用すると正常に動作します(さまざまなアクション):

http://localhost/member/delete/ME222 
http://localhost/admin/view/AD321

私はこのように見える私のルート設定を持っています:

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", 
  action = "Index", id = UrlParameter.Optional }
 );

しかし今、私はメンバーと管理者の両方の共有アクション(詳細)を作成しました。これをSharedControllerに入れて、次のようにアクセスしたいと思います。

http://localhost/member/detail/ME222
http://localhost/admin/detail/AD321

もちろん、上記のURLにアクセスすると、そのアクションはAdmin-およびMemberControllerに存在しません。

コントローラ(メンバーまたは管理者)の現在のアクションが存在しない場合、上記をルーティングしてSharedControllerのアクションに移動するにはどうすればよいですか?(詳細アクションだけでなく、存在しないすべてのアクションに対して)

ありがとうDavid

4

2 に答える 2

0

アクションが常に存在することを確認する必要があります...おそらく、コントローラーの基本クラスを作成できます。

次に、基本アクション内で単純に戻ることができます。

this.RedirectToAction("action", "controller");

これを共有コントローラーの関連するアクションに向けます。

于 2012-11-30T10:38:36.823 に答える
0

両方のコントローラーに共通のアクションがある場合は、コントローラーの基本クラスとなるものを作成するだけUserControllerです。次に、すべての一般的なアクションを内部に配置すると、機能するはずです。 何かをオーバーライドしたい場合(または、たとえば、ロールごとに異なる属性を持つマークアクションを配置したい場合)、アクションを仮想化してから、子クラスでオーバーライドできます。MemberAdminUserController

于 2012-11-30T10:42:35.630 に答える