需要关于控制器,视图,路由的方向

时间:2014-03-22 01:06:38

标签: asp.net asp.net-mvc

我有2个型号。

客户和商店模式。 顾客可以有很多商店。

我为两者创建了基本/脚手架控制器和视图。

因此,客户控制器具有索引,创建,编辑,删除操作。

在我的客户索引视图中,我希望每个客户都有一个“商店”的链接,这些链接将转到“存储”索引页面,只是它会显示该客户的列表......

现在通常我们有URL模式,例如

          /Customer/Create
          /Customer/Details/Id
          /Customer/Edit/Id

如上所述,我希望编辑/删除/详细信息旁边的商店链接可以像

一样工作
          /Customer/1/Store/Index
          /Customer/1/Store/Create
          /Customer/1/Store/Edit/1

我的网址构建可能不对,但这是我的想法。如何实现这种行为。我是否在客户控制器中创建商店功能?我很困惑,那么我将如何实现/ Customer / 1 / Store / Edit / 1这种行为......

我正在寻找阅读材料,因为我不确定要搜索什么。而且,URL模式不是我想要的...我正在寻找一种简单的方法来实现它。不知道这是否有意义..

1 个答案:

答案 0 :(得分:1)

asp.net mvc中的路由非常灵活。使用模板项目(以及许多示例),您将获得以下路线:

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

为控制器提供类似/Customer/Edit/1的网址"客户",操作"编辑",ID" 1"。

但你不必遵循这种模式。所以你可以这样做:

 routes.MapRoute(
        name: "Store",
        url: "Customer/{customerId}/Store/{action}/{storeId}",
        defaults: new { controller = "Store", action = "Index", storeId = UrlParameter.Optional, customerId = 0 }
        );

然后在Store控制器中创建一个操作方法,如:

public ActionResult Edit(int customerId, int storeId) { ... }

让您使用路线/Customer/1/Store/Edit/3

请记住,即使稍后定义了更好的匹配,可能匹配的第一个路由也会匹配。