2010-10-20 54 views
0

好吧,讓我從更多的MVC人開始。我有一個結果集,我試圖添加分頁。我真正想要的是我的頁面上的上一個和下一個按鈕,它們是鏈接控件。我需要這些控件回發到同一頁面,但有一個像頁面= 4的查詢parm。我如何添加這些鏈接?我在鏈接上看到PostBackUrl屬性。我應該只使用Request.Url並將其填充到PostBackUrl中嗎?然後我必須在parm上進行字符串搜索......它變得討厭。這是唯一的方法嗎?我曾嘗試過ViewState,請不要暗示......就我而言,這是無法預測的垃圾。鏈接上的ASP.NET窗體參數

+0

你想做這樣的事嗎? http://www.4guysfromrolla.com/articles/021308-1.aspx – Greg 2010-10-20 20:56:48

+0

另外,你的字面意思是你需要一個POST還是你想獲得? – Greg 2010-10-20 20:58:45

+0

是的 - 如果您只是使用QS重定向到另一個URL,我在這裏看不到需要POST。請求的所有信息都在QS中 - 只需使用HTTP GET的常規鏈接即可。 – RPM1984 2010-10-20 22:58:44

回答

0

PostBackUrl屬性用於跨頁面回發,你不想這樣做。

如果您想使用POST,您可以使用LinkBut​​ton,處理單擊事件並重新綁定結果集。像

public void BackButton_Click(object sender, EventArgs e) 
{ 
    // Get existing page from session, viewstate, etc 
    // RebindGrid 
} 

東西,如果你想使用一個GET,你可以用一個超鏈接,NavigateUrl屬性設置爲正確的網址。喜歡的東西

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); 
+0

我想要的只是做一個回貼,但附加一個get parm ...所以它的兩個。 – CrazyDart 2010-10-21 17:16:37

+0

因爲您提供了一些很好的鏈接和想法,我將爲您標記答案。 – CrazyDart 2010-10-21 17:20:28

+0

如果您還有其他問題,我會盡力幫忙。 – Greg 2010-10-21 17:29:48

0

你說的是ASP.NET Webforms或MVC?

如果你在談論Webforms,我不認爲你會在這方面取得成功。我相信您需要在使用Session或其他方式進行分頁之間控制此移動,或者爲每個頁面重新綁定您的數據。

0

我最終做的事情是把隱藏在頁面上,讓我需要傳回的變量,然後讀取這些變量。這是像頁碼這樣的東西,它允許我計算上一頁和下一頁。抱歉提交我自己的答案,但這有點奇怪,我想我會告訴我最終做了什麼。

由於某種原因,查看狀態每次都是空的,所以它對我沒有好處。這是在一個DNN應用程序,我不想花時間搞清楚viewstate爲什麼搞砸了。