带有搜索参数的自定义分页中的问题

时间:2013-01-15 09:55:11

标签: c# asp.net .net

我有一个只有一个网络表单的web forms应用程序。作为custom paging的一部分,我在网格视图下的每个索引页面都有hyperlinks。这些超链接网址位于同一页面,其中所需页面的索引号附加为query string

string url = requestUrl;
int position = requestUrl.IndexOf('?');
if (position > 0)
{
         url = requestUrl.Substring(0, position);
}

string link = "<a  href='" + url + "?Index=[Index]&amp;Size=[Size]'><span class='page-numbers'>##Text##</span></a>";

每次单击特定页面的超链接时,都将从数据库中检索数据。因此,我还需要将搜索参数传递给新索引的页面。我可以将它作为查询字符串传递。但挑战是在某些情况下参数内容长度可能超过查询字符串限制。

单击超链接时,将搜索参数传递给新页面的最佳方法是什么?

注意:可以在custom-paging-in-asp-net-web-application

中引用分页的简化示例

注意:规则的大拇指不是使用长度超过2000个字符的网址

修改

根据答案,我使用的是LinkBut​​tons而不是Hypelinks。 LinkButton可以Postback。此外,我已经将分页逻辑放在User Control中。它不需要任何业务特定数据和搜索参数。此代码可在https://codereview.stackexchange.com/questions/20510/custom-paging-in-asp-net-web-application

中查看

参考

  1. What is the maximum length of a URL?
  2. What is the limit on QueryString / GET / URL parameters
  3. Custom paging with ASP.NET GridView

1 个答案:

答案 0 :(得分:1)

由于您要导航到同一页面并只传递一些参数 - 而不是使用常规超链接,请使用 LinkButton 来处理服务器端的请求并刷新数据。

无论您想传递什么参数 - 都可以放入 hidden fields

使用此解决方案,您有no need to use URLs并且数据 POST -ed回到服务器(而非 GET 方法,正如您所提到的那样,它的极限)

例如,在您的aspx页面中:

<asp:LinkButton runat="server" ID="lbNextPage" onclick="lbNextPage_Click" />
<asp:HiddenField runat="server" ID="hdnData" />

然后在你的代码背后:

protected void lbNextPage_Click(object sender, EventArgs e)
{
        string data = hdnData.Value;

        // Refresh data based on data
        GridView1.DataSource = <NEW DATATABLE>;
        GridView1.DataBind();
}

当然,您使用要传递给超链接的任何参数填充hdnData。