2

我知道你可以通过 url 传递参数,.com/MyPage/?controlID=5但是你怎么能用类似的东西.com/MyPage/5呢?因此不需要变量名或问号。

4

2 回答 2

5

您将定义自定义路由,或使用模型绑定来获得预期效果。在您的情况下,路线将类似于:

routes.Add("someRoute",
    "{controller}/{action}/{controlId}",
    new { controller = "Home", action = "Index", controlId = UrlParameter.Optional }
    );

public ActionResult Index(int? controlId)
{
}

现在,这条路线的唯一“陷阱”是,如果您还指定了默认路线,这两条路线将发生争用,而您定义的第一个路线将获胜。如果存在某种形式的区分值(例如,该 controlId 始终与某种模式匹配),那么您始终可以向路由添加 HttpRouteConstraint 以区分您的新路由和默认路由。

或者,如果您仍在使用默认路由,您可以将操作方法​​上的参数重命名为 be id,并将查询字符串键更改为“id”:

public ActionResult Index(int? id)
{
   // Do Stuff
}
于 2012-10-31T17:12:48.650 回答
2

在 MyPageController 中创建一个方法:

public ActionResult Index (int id)
{
}

这将适用于默认路由

于 2012-10-31T17:10:55.037 回答