在ASP.NET MVC中,在链接中附加路由数据有2种方式。一种是把路由数据放在匿名对象中传递:
<a href="@Url.Action("GetRouteData","Home",new { ReturnUrl = Request.Url.PathAndQuery, x = 10})">走你</a>
一种是放在RouteValueDictionary对象中传递:
<a href="@Url.Action("GetRouteData","Home",new RouteValueDictionary(new { a = 1, b = 2 }))">也走你</a>
如果在控制器中,通过类似this.ControllerContext.RouteData.Values["somekey"].ToString()方式来获取路由数据是行不通的,因为Url.Action方法所带的路由数据是以querystring的形式传递的。
通过如下方式来获取链接中的路由数据:
var temp = Request.QueryString["ReturnUrl"];var temp1 = Request.QueryString["x"];var temp2 = Request.QueryString["a"];