2012-12-03 55 views
2

我有一個站點,控制器是像/John/NewPage這樣的用戶名,對於Mary來說是同樣的事情。ASP.NET MVC中的多個控制器

如何在不必爲每個新用戶創建控制器的情況下執行此操作?

Thks

+3

看看[MVC路由](http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs) – SliverNinja

+0

你將會像其他人所說的那樣使用路由。您將爲每個用戶使用相同的控制器,但您可以實現所需的URL。然後,只需使用URL中的用戶名來查找數據庫中的數據並設置好即可。 –

回答

1

查看自定義路由。就像:

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

但是你將不得不照顧自己形成這些網址。

0

你可以做這樣的事情。定義一個名爲控制器類似「UserController的」,然後使用自定義的路由,以便沒有必要在URL中有「UserController的」:

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

使用這個配置中,「/瑪麗/新頁」 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 「/ SomeOtherController/DefinedAction/12」 將調用類似SomeOtherController.DefinedAction(12)。