我知道您可以通过.com/MyPage/?controlID=5
这样的url传递参数,但是如何使用.com/MyPage/5
这样的东西呢?因此不需要变量名或问号。
最佳答案
您可以定义一个自定义路由,或者使用模型绑定来获得预期的效果。在你的情况下,路线是这样的:
routes.Add("someRoute",
"{controller}/{action}/{controlId}",
new { controller = "Home", action = "Index", controlId = UrlParameter.Optional }
);
public ActionResult Index(int? controlId)
{
}
现在,这个路由唯一的“问题”是,如果您还指定了默认路由,这两个路由将处于竞争状态,您定义的第一个路由将获胜。如果存在某种形式的区分值(例如,该controlId始终与某种模式匹配),则始终可以向路由添加HttpRouteConstraint,以将新路由与默认路由区分开来。
或者,如果仍在使用默认路由,则可以将action方法上的参数重命名为
id
,并将查询字符串键更改为“id”:public ActionResult Index(int? id)
{
// Do Stuff
}
关于c# - 使用MVC通过网址传递参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13163202/