我有一个只有一个网络表单的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]&Size=[Size]'><span class='page-numbers'>##Text##</span></a>";
每次单击特定页面的超链接时,都将从数据库中检索数据。因此,我还需要将搜索参数传递给新索引的页面。我可以将它作为查询字符串传递。但挑战是在某些情况下参数内容长度可能超过查询字符串限制。
单击超链接时,将搜索参数传递给新页面的最佳方法是什么?
注意:可以在custom-paging-in-asp-net-web-application
中引用分页的简化示例注意:规则的大拇指不是使用长度超过2000个字符的网址
修改
根据答案,我使用的是LinkButtons而不是Hypelinks。 LinkButton
可以Postback
。此外,我已经将分页逻辑放在User Control
中。它不需要任何业务特定数据和搜索参数。此代码可在https://codereview.stackexchange.com/questions/20510/custom-paging-in-asp-net-web-application
参考:
答案 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。