2012-05-17 94 views
0

我剛剛學習MVC,並且有一個問題,我確定對除了我之外的每個人都是顯而易見的;-)。我正在使用EF4和DbContext的MVC3,並在理解大部分基本功能方面取得了很大的成功。這是我的問題:在MVC3中路由

可以說我有2個表(公司&用戶)和它們之間的一對多關係(外鍵公司ID)。

我的問題是:什麼是在MVC中強制執行一對多關係的最佳方式?我不希望任何公司的任何人編輯任何用戶。我只希望公司X中的人員修改他們自己的用戶。

我正在嘗試在特定公司中創建新用戶。我不想在用戶視圖中使用標準EF模板(它爲您提供公司下拉列表,因爲它是一個外鍵)。我想確保我在/ Company/123456之前可以從該公司內部創建用戶。

我看了一下ASP.NET路由,看看是否可以這樣: /Company/123456/User/Create/- 它看起來不像它。 (看起來像我只能有一個控制器/動作/ ID)。我只是不確定在創建新對象時如何「記住」我們目前在Company 123456中。

Querystrings? (/用戶/創建/?公司= 123456)。我應該創建另一個班級(公司用戶)嗎?如果是這樣,我不確定路由的外觀(CompanyUser/Create/123456)?

在此先感謝您的建議。

邁克

回答

3

對於/公司/ 123456 /用戶/創建/它應該被配置爲:

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

在這種情況下,/公司/ 123456 /用戶/創建/會去一個動作那看起來像

public class UserController : Controller { 
    ... 
    public ActionResult Create(int companyId){ 
     ... 
    } 
} 
+0

謝謝!我會考慮使用你的解決方案! –

+0

最後一個問題:這是在視圖中引用它的正確方法嗎? @ Html.ActionLink(「創建新用戶」,Model.UserId +「/用戶/創建」,空,新{@class =「btn」}) –

+0

我認爲最好的是使用這個重載:http:// msdn。 microsoft.com/en-us/library/dd504972.aspx。這會給你類似@ Htm.ActionLink(「創建新用戶」,「創建」,「用戶」,新{companyId = Model.CompanyId},新{@class =「btn」}) - 請注意,我把公司Id不同於userId – ivowiblo