我知道你可以通过 url 传递参数,.com/MyPage/?controlID=5
但是你怎么能用类似的东西.com/MyPage/5
呢?因此不需要变量名或问号。
问问题
8084 次
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 回答