4

不仅仅是{controller}/{action}/{id}有可能有多个参数,比如 {controller}/{action}/{id}/{another id}

我是 MVC 的新手(来自纯网页)。如果不可能,MVC 是否提供类似于UrlDataWeb Pages 中可用的辅助方法?

4

2 回答 2

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)
{
    // ...
}
于 2012-04-12T02:12:12.060 回答
4

是的,您可以在一个路由中定义多个参数。您需要首先在 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

路由在这里更详细地讨论

于 2012-04-12T02:18:37.447 回答