我知道您可以通过.com/MyPage/?controlID=5
等网址传递参数,但是如何使用.com/MyPage/5
之类的内容传递参数?因此不需要变量名称或问号。
答案 0 :(得分:5)
您可以定义自定义路径,或使用模型绑定来获得预期效果。在您的情况下,路线将是这样的:
routes.Add("someRoute",
"{controller}/{action}/{controlId}",
new { controller = "Home", action = "Index", controlId = UrlParameter.Optional }
);
public ActionResult Index(int? controlId)
{
}
现在,这条路线唯一的“陷阱”是,如果您还指定了默认路线,这两条路线将处于争用状态,您定义的第一条路线将获胜。如果存在某种形式的差异化值(例如,controlId总是匹配某种模式),那么您始终可以在路由中添加HttpRouteConstraint,以区分新路由和默认路由。
或者,如果您仍在使用默认路由,则可以将操作方法上的参数重命名为id
,并将查询字符串键更改为“id”:
public ActionResult Index(int? id)
{
// Do Stuff
}
答案 1 :(得分:2)
在MyPageController中创建一个方法:
public ActionResult Index (int id)
{
}
这将适用于默认路由