0

私はちょうど MVC を学んでいて、私以外の誰にとっても明白であると確信している質問があります;-)。私は EF4 と DbContext で MVC3 を使用しており、基本的な機能のほとんどを理解することに成功しています。これが私の問題です:

2 つのテーブル (会社とユーザー) があり、それらの間に 1 対多の関係 (外部キー会社 ID) があるとします。

私の質問はこれです: MVC で 1 対多の関係を強制する最良の方法は何ですか? どの会社の誰にも、ユーザーを編集させたくありません。会社 X の人だけが自分のユーザーを変更できるようにしたい。

特定の会社で新しいユーザーを作成しようとしています。ユーザー ビューで標準の EF テンプレート (外部キーであるため、会社のドロップダウン リストが表示されます) を使用したくありません。/Company/123456 内からユーザーを作成する前に、自分が /Company/123456 にいることを確認したいと思います。

ASP.NET ルーティングを調べて、次のようなことが可能かどうかを確認しました: /Company/123456/User/Create/ - そのようには見えません。(コントローラー/アクション/IDは1つしか持てないようです)。新しいオブジェクトを作成するときに、現在会社 123456 にいることをどのように「覚えている」のかわかりません。

クエリ文字列? (/User/Create/?Company=123456)。別のクラス (CompanyUser) を作成する必要がありますか? その場合、ルーティングがどのようになるかわかりません (CompanyUser/Create/123456)?

アドバイスをいただきありがとうございます。

マイク

4

1 に答える 1

3

/Company/123456/User/Create/ の場合、次のように構成する必要があります。

routes.MapRoute(
            "CreateCompanyUsers",                                                                    
            "/Company/{companyId}/User/Create",                           
            new { controller = "User", action = "Create" }
        );

この場合、 /Company/123456/User/Create/ は次のようなアクションに移動します

public class UserController : Controller {
   ...
   public ActionResult Create(int companyId){
       ...
   }
}
于 2012-05-17T14:36:21.073 に答える