Webmatrix - 跨页面保持查询字符串

时间:2013-12-16 15:53:15

标签: jquery razor webmatrix

我刚刚在我的一个搜索页面上设置了分页,但是我遇到了问题,因为当我在页面之间点击时,查询字符串(我用来构建我的搜索查询)会丢失。有没有一种简单的方法来持久化它们,还是我需要写一些花哨的javascript来做到这一点?

例如,我的网页可能包含以下网址localhost \ search?qstring1 = 1& qstring2 = 2

在页面底部,我有以下代码,它提供了我需要保存这些查询字符串的链接。

for (var i = 1; i < totalPages + 1; i++){
    <li><a href="/search1/@i">@i</a></li>
}

2 个答案:

答案 0 :(得分:3)

您可以使用Request.QueryString访问当前查询字符串。像这样的东西应该做的伎俩:

for (var i = 1; i < totalPages + 1; i++) {
    <li><a href="/search/@i?@Request.QueryString">@i</a></li>
}

您的链接最终应如下所示:

/search?x=1&y=2
/search/2?x=1&y=2
/search/15?x=1&y=2

UrlData[0].AsInt(1)应该有您的页码,默认为第一页,您的查询字符串应该保留。

答案 1 :(得分:2)

如果要在托管代码中执行此操作,则应使用某些queyrstring构建器。您可以在哪里访问当前页面查询字符串,根据页面上的不同链接添加/删除键/值对。请在此处查看一个解决方案:http://weblogs.asp.net/bradvincent/archive/2008/10/27/helper-class-querystring-builder-chainable.aspx

e.g:

//create a querystring from the current URL, add 'id','user' and 'sessionId' values and remove an 'action' value
//output : "?id=123&user=brad&sessionId=ABC"
string strQuery = QueryString.Current.Add("id", "123").Add("user", "brad").Add("sessionId", "ABC").Remove("action").ToString();