使用MVC通过url传递参数?

时间:2012-10-31 17:08:32

标签: c# html asp.net-mvc razor asp.net-mvc-routing

我知道您可以通过.com/MyPage/?controlID=5等网址传递参数,但是如何使用.com/MyPage/5之类的内容传递参数?因此不需要变量名称或问号。

2 个答案:

答案 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)
{
}

这将适用于默认路由