MVC 4:多个控制器动作参数

时间:2012-04-12 02:03:30

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

可以有多个参数,而不仅仅是{controller}/{action}/{id} {controller}/{action}/{id}/{another id}

我是MVC的新手(来自普通的网页)。如果不可能,MVC是否提供了一个帮助方法,如网页中的UrlData可用?

2 个答案:

答案 0 :(得分:4)

您只需要在global.asax中映射新路由,如下所示:

routes.MapRoute(
    "NewRoute", // Route name
    "{controller}/{action}/{id}/{another_id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, another_id = UrlParameter.Optional } // Parameter defaults
);

然后在你的控制器动作中你可以选择这样的参数:

public ActionResult MyAction(string id, string another_id)
{
    // ...
}

答案 1 :(得分:3)

是的,您可以在路线中定义多个参数。您需要先在Global.asax文件中定义路线。您可以在URL段中或在URL段的部分中定义参数。要使用您的示例,您可以将路径定义为

{controller}/{action}/{id1}/{id2}
然后,MVC基础结构将解析匹配的路由以提取id1和id2段,并将它们分配给操作方法中的相应变量:

public class MyController : Controller
{
   public ActionResult Index(string id1, string id2)
  {
    //..
  }
}

或者,您也可以接受来自查询字符串或表单变量的输入参数。例如:

MyController/Index/5?id2=10

更详细地讨论了路由here