如何在MVC路由后获取查询字符串值

时间:2015-01-23 08:46:17

标签: asp.net asp.net-mvc-4

我猜测我的方法是错误的,这就是为什么我的研究产生的结果很少

我的网站使用的是查询字符串,在我的HtmlHelper类中,我可以使用以下代码获取查询字符串

启动MVC4时,defulat路由允许您将ID作为查询字符串传递。路由引擎'转换'这从查询字符串到URL的一部分 我如何查询此值?

public static MvcHtmlString ActionLinkWithQueryString(this HtmlHelper helper, string linkText, string action, string controllerName, object routeValues)
{
    var queryString = helper.ViewContext.HttpContext.Request.QueryString;
    ... 

以上工作正常。

但是,我现在正在使用路由引擎。当您第一次使用MVC时,您将获得为您设置的ID参数,当您执行类似于www.mysite.com/?id=HelloWorld的搜索时,路由引擎会转换'或者'翻译'这是一个URL,例如www.mysite.com/HelloWorld

问题是,我仍然需要获得该值 - HelloWorld值。

使用上面的代码总是返回一个空列表,因为没有查询字符串!

我知道我只能读取URL,用正斜杠拆分然后从数组中取出项目,但是,我希望有一种更优雅的方式。

造成这种情况的真正原因是由于分页。发生的事情是我的网址是www.mysite.com/products/shoes/12

然后我点击下一页,它会丢失值,显示www.mysite.com/products/10(其中10是起始索引)。显然我需要网址为www.mysite.com/products/10/shoes/12

如何从URL获取值HelloWorld(ID参数)?

1 个答案:

答案 0 :(得分:1)

您可以从路线值获取它:

object id = helper.ViewContext.RouteData.Values["id"];