2

ASP.NET Coreプロジェクトのユーザータイプに基づいて2つのコントローラがあります。 1つはadminの場合はAdminController、もう1つの場合はUserControllerです。また、サインインと連絡先のページにはHomeControllerもあります。私は、管理者とユーザーの両方のコントローラに次のマップルート設定を使用しています。私はURLのASP.NETコアのルーティング

/User/user1 
/Admin/user2 

、次の種類を取得していたルート設定の上使用することにより

config.MapRoute(
     name: "UserRoute", 
     template: "{controller}/{username}/{action}", 
     defaults: new { controller = "User|Admin", action = "Dashboard" } 
); 

私は

/user1 
/user2 

がどのようにしたいの代わりにURLでAdminUser一部を望んでいませんURLからUserAdmin部分を削除しますか?コントローラーを{controller}/{username}/{action}から削除し、デフォルトでコントローラーのみを指定すると、1つのコントローラーでのみ機能します。

+0

はこれをチェック同様の問題:http://stackoverflow.com/questions/3337372/asp-net-mvc-removing-controller-name-from-url。デフォルトルートに影響を与えることなく、追加の 'MapRoute'に対してルート制約を利用できます。 –

答えて

1

mvcは使用するコントローラを理解できないため、2つのデフォルトコントローラで同じURLテンプレートを使用することはできません。

あなたはちょうどこのように、2つのルートおよび/ Adminおよび/ユーザーとのそれぞれを持つことができ、次のいずれか

config.MapRoute(
     name: "UserRoute", 
     template: "User/{username}/{action}", 
     defaults: new { controller = "User", action = "Dashboard" } 
); 

config.MapRoute(
     name: "AdminRoute", 
     template: "Admin/{username}/{action}", 
     defaults: new { controller = "Admin", action = "Dashboard" } 
); 

、ホームコントローラから、ユーザーの役割を確認することができ、正しいルートに彼をリダイレクト。

別のアプローチ、あなたが

config.MapRoute(
     name: "UserRoute", 
     template: "{username}/{action}", 
     defaults: new { controller = "User", action = "Dashboard" } 
); 

を必要として唯一つのルートになります。しかし、このバージョンでは、あなたはコントローラが1つしかないだろうし、あなたがアクションを有効または無効にすることができ、ユーザーの役割に応じて

+0

'RedirectToAction(actionname、controllername)'を使用すると、どのコントローラーを使用するのかをMVCに伝えていませんか?私はページにリダイレクトしながらコントローラを指定しているからです。私は 'admin'と' user'の両方を別々のコントローラに分けました。両方が同じような機能をほとんど持たず、 'UserController'を1つしか作成せず、そのコントローラのすべてのタイプのユーザを管理しているとメンテナンスが難しいからです。 –

+0

'RedirectToAction'では、どのコントローラをパラメータとして使用するのかをMVCに指示し、ユーザがログインするまでには、どのコントローラを使用するのか、Admin to Userを知っています。 どのようにしても、ほとんどのサイトでUserとAdminのURLが異なっていますが、MVCでは通常管理用の領域と別のマスターページ用の領域が作成されます。 –

+0

私はそれぞれのビューフォルダに 'user'と' admin'のマスターページがあります。誰かがURLを調べるだけでユーザーの種類を知ることができるので、私はURLから役割を削除したかったのです。私は1つだけの 'UserController'を作成し、そこにユーザタイプを扱わなければならないと思いますが、すべてのユーザタイプに対して異なるビューとマスターページを保持しています。 –

関連する問題