我知道您可以通过.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/

10-13 06:15