ASP.NET MVC中的多个控制器

时间:2012-12-03 19:33:53

标签: asp.net-mvc

我有一个网站,控制器是用户的名字,如/John/NewPage,对Mary来说也是一样。

如何在不必为每个新用户创建控制器的情况下执行此操作?

THKS

2 个答案:

答案 0 :(得分:1)

查看自定义路由。类似的东西:

    context.MapRoute(
        "User_default", // Route name
        "{userName}/{controller}/{action}/{id}", // URL with parameters
        new { id = UrlParameter.Optional } // Parameter defaults
    )

但你必须自己照顾这些网址。

答案 1 :(得分:0)

你可以这样做。定义一个名为“UserController”的控制器,然后使用自定义路由,这样就不需要在URL中有“UserController”:

context.MapRoute(
    "User_Route", // Route name
    "{userName}/{action}", // URL with parameters
    new { 
      controller = "UserController",
      action = "NewPage"
    } // Parameter defaults
);

使用该设置,“/ Mary / NewPage”URL将调用UserController.NewPage(“Mary”),“/ John / EditPage”将调用UserController.EditPage(“John”),只是“/ Jane”将调用UserController.NewPage(“Jane”)。

您还需要为该路线上方的不同控制器定义路线,以便首先调用它们。例如:

context.MapRoute(
    "SomeOther_Route", // Route name
    "SomeOtherController/{action}/{id}", // URL with parameters
    new { 
      controller = "SomeOtherController"
    } // Parameter defaults
);

上述URL仍然有效,但现在这个URL“/ SomeOtherController / DefinedAction / 12”会调用SomeOtherController.DefinedAction(12)之类的东西。