2

我有一个站点,控制器是用户的名称,就像/John/NewPageMary 一样。

如何在不必为每个新用户创建控制器的情况下做到这一点?

谢谢

4

2 回答 2

1

查看自定义路由。就像是:

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

但是您必须自己处理这些 url。

于 2012-12-03T19:47:31.507 回答
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。新页(“简”)。

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

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) 的东西。

于 2012-12-03T21:20:57.907 回答