链接上的ASP.NET表单参数

时间:2010-10-20 20:43:36

标签: asp.net

好的,让我开始吧,我更像是一个MVC人。我有一个结果集,我试图添加分页。我真正想要的只是我页面上的上一个和下一个按钮,它们是Link控件。我需要这些控件回发到同一页面,但有一个像page = 4的查询parm。如何添加这些链接?我在链接上看到了PostBackUrl属性。我应该只使用Request.Url并将其填充到PostBackUrl中吗?然后我必须在parm上进行字符串搜索......它变得令人讨厌。这是唯一的方法吗?我试过ViewState,请不要暗示......就我而言,它是无法预测的垃圾。

3 个答案:

答案 0 :(得分:0)

您在谈论ASP.NET Webforms还是MVC?

如果你在谈论Webforms,我认为你不会在那方面取得成功。我相信您需要在您的分页与其他方式之间控制此移动,或者为每个页面重新绑定您的数据。

答案 1 :(得分:0)

PostBackUrl属性用于跨页回发,您不希望这样做。

如果要使用POST,可以使用LinkBut​​ton,处理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搞砸了。