在MVC3中路由

时间:2012-05-17 14:30:25

标签: asp.net asp.net-mvc-3 entity-framework-4

我只是在学习MVC并且有一个问题,我确信除了我之外每个人都很明显;-)。我正在使用MVC3与EF4和DbContext,并在理解大多数基本功能方面取得了很大成功。这是我的问题:

假设我有2个表(公司和用户)以及它们之间的1对多关系(外国公司ID)。

我的问题是:在MVC中实施1对多关系的最佳方法是什么?我不希望任何公司的任何人编辑任何用户。我只希望X公司的人员修改他们自己的用户。

我正在尝试在特定公司中创建新用户。我不想在用户视图中使用标准EF模板(因为它是外键而为您提供公司下拉列表)。在我可以从该公司内部创建用户之前,我想确保我在/ Company / 123456中。

我查看了ASP.NET路由,看看这样的事情是否可行: / Company / 123456 / User / Create / - 它看起来不像。 (看起来我只能有一个Controller / Action / Id)。在创建新对象时,我只是不确定我是否“记得”我们目前在公司123456中。

查询字符串? (/用户/创建/?公司= 123456)。我应该创建另一个类(CompanyUser)吗?如果是这样,我不确定路由的外观(CompanyUser / Create / 123456)?

提前感谢您的建议。

麦克

1 个答案:

答案 0 :(得分: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){
       ...
   }
}