2013-08-04 57 views
0

目前我有一個名爲(管理)的控制器。我希望它具有鏈接,如控制器內的多個操作

Manage/Users/{userid}/{manageType} 
Manage/Pages/{pageid}/{manageType} 

其中操作manageType可以是(設置,用戶名,說明)。

在我的管理控制器中構建這個結構的最佳方法是什麼,這樣我可以擁有所有這些屬性?是否有可能存在其他操作中的多個操作功能?例如,

ManageController 
-> viewResult Users(int userID) 
-> viewResult Pages(int pageID) 
-> viewResult Type(string typeID) 

用戶和頁面將從鏈接中獲取ID後指向的類型。

回答

2

「是否有可能存在其他操作中的多個操作功能?」 這將如何工作?操作方法只是常規的.NET方法 - 操作內的操作並不合理。

如果你想這一切在一個控制器,你必須有這樣的事情:

public ActionResult UserSettings(int userid) { /*...*/ } 
public ActionResult UserName(int userid) { /*...*/ } 
public ActionResult UserDescription(int userid) { /*...*/ } 
public ActionResult PageSettings(int userid) { /*...*/ } 
public ActionResult PageName(int userid) { /*...*/ } 
public ActionResult PageDescription(int userid) { /*...*/ } 

你可以線了路由這樣的:

routes.MapRoute(
       name: "Default", 
       url: "Manage/Users/{userid}/Settings", 
       defaults: new { controller = "Manage", action = "UserSettings" }, 
       constraints = new { userid = @"\d+" } 
      ); 

+0

所以我基本上可以這樣做:http://pastebin.com/wXPevXr1 –

+0

你可以做這樣的事情,但你遺漏了用戶標識,所以它不再是URL的一部分,約束也沒有效果。如果你希望userid作爲查詢參數傳遞,那麼你有什麼可以,但約束不起作用 – Rune