控制器内的多个动作

时间:2013-08-04 21:06:32

标签: asp.net asp.net-mvc-4

目前我有一个名为(Manage)的控制器。我希望它有像

这样的链接
Manage/Users/{userid}/{manageType}
Manage/Pages/{pageid}/{manageType}

动作manageType可以是(设置,用户名,描述)。

在我的管理控制器中构建此内容的最佳方法是什么,以便我可以拥有所有这些属性?是否可能存在其他操作中的多个操作函数?例如

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

用户和页面在从链接获取ID后将指向该类型。

1 个答案:

答案 0 :(得分:2)

“是否可能存在其他操作中的多个操作功能?” 那会怎么样? Action方法只是常规的.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+" }
            );