我有一个网站,控制器是用户的名字,如/John/NewPage
,对Mary来说也是一样。
如何在不必为每个新用户创建控制器的情况下执行此操作?
THKS
答案 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)之类的东西。