好的,让我开始吧,我更像是一个MVC人。我有一个结果集,我试图添加分页。我真正想要的只是我页面上的上一个和下一个按钮,它们是Link控件。我需要这些控件回发到同一页面,但有一个像page = 4的查询parm。如何添加这些链接?我在链接上看到了PostBackUrl属性。我应该只使用Request.Url并将其填充到PostBackUrl中吗?然后我必须在parm上进行字符串搜索......它变得令人讨厌。这是唯一的方法吗?我试过ViewState,请不要暗示......就我而言,它是无法预测的垃圾。
答案 0 :(得分:0)
您在谈论ASP.NET Webforms还是MVC?
如果你在谈论Webforms,我认为你不会在那方面取得成功。我相信您需要在您的分页与其他方式之间控制此移动,或者为每个页面重新绑定您的数据。
答案 1 :(得分:0)
PostBackUrl属性用于跨页回发,您不希望这样做。
如果要使用POST,可以使用LinkButton,处理click事件并重新绑定结果集。像
这样的东西public void BackButton_Click(object sender, EventArgs e)
{
// Get existing page from session, viewstate, etc
// RebindGrid
}
如果要使用GET,可以使用HyperLink并将NavigateUrl属性设置为正确的Url。像
这样的东西int page;
if( !int.TryParse(Request.QueryString["page"], out page) )
page = 1;
if( page > 1 )
BackUrl.NavigateUrl = Request.Path + "?page=" + (page-1).ToString();
else
NextUrl.NavigateUrl = Request.path + "?page=" + (page+1).ToString();
// Note: not syntax/bounds checked
编辑: 也许您正在寻找Post-Redirect-Get pattern?
Response.Redirect(HttpContext.Current.Request.Path + query, true);
答案 2 :(得分:0)
我最终做的是将hiddens放在我需要传回的vars的页面上,然后我读了那些。这是像页码这样的东西,它允许我计算上一页和下一页。很抱歉提交我自己的答案,但这有点奇怪,我想我会告诉我最终做了什么。
由于某种原因,查看状态每次都是空的,所以这对我没有好处。这是一个DNN应用程序,我不想花时间弄清楚为什么viewstate搞砸了。