2012-11-09 58 views
0

我是asp新手,已經編寫了一個項目,它將連接到數據庫,檢索數字記錄,然後將這些記錄以分頁表格的形式呈現給用戶。用戶可以點擊一條記錄進行編輯,進行編輯,保存更改並返回到原始表格視圖。更新頁面是強類型的。ASP.NET mvc 3分頁/跟蹤最後一頁

我很努力跟蹤上一次查看哪個分頁頁面,然後導航回去。即如果用戶位於第10頁的第5頁上,則他們會從第5頁更新記錄,當保存編輯時,表格會再次顯示,但它已返回到第1頁。最後一個記錄最後一個方法的最佳方法是什麼分頁頁面?

任何幫助表示讚賞。

克里斯

+0

看看這個答案:http://stackoverflow.com/a/9773887/138938 –

回答

0

最後,我使用的服務器上的會話cookie來跟蹤顯示的頁面和上次搜索。這意味着我可以在頁面/控制器之間導航,並跟蹤每個頁面顯示的內容,而且不需要傳遞大量參數。在控制器

private SearchModel GetSearch() 
    { 
     SearchModel search = (SearchModel)Session["CgRefCodeSearch"]; 
     if (search == null) 
     { 
      search = new SearchModel(); 
      search.Page = 1; 
      search.OriginalSearchCriteria = ""; 
      Session["CgRefCodeSearch"] = search; 
     } 
     return search; 
    } 

在每一個功能,那麼我可以參考這個:我添加了一個新的類:

public class SearchModel 
{ 
    public string TargetController { get; set; } 
    public string TargetMethod { get; set; } 
    public string OriginalSearchCriteria { get; set; } 
    public string NewSearchCriteria { get; set; } 
    public int Page { get; set; } 

    public void SetCriteria(String newCriteria, int pageIn) 
    { 

     if (!newCriteria.Equals(OriginalSearchCriteria)) 
     { 
      OriginalSearchCriteria = newCriteria; 
      Page = 1; 
     } 
     else 
     { 
      Page = pageIn; 
     } 
    } 

    public void SetPage(int newPage) 
    { 
     if (newPage != 0) 
      Page = newPage; 

    } 


} 

在控制器我只是說

GetSearch().SetPage(page); 
CurrentPage = GetSearch().Page etc... 

這是基於我在這個由Adam Freeman編寫的Pro ASP.NET MVC 3框架第三版中閱讀的東西;史蒂文桑德森。它非常簡單,但可以正常工作。

0

通常我會重定向後,當保存傳遞表單提交的頁碼,然後,把它作爲查詢字符串的一部分,所以你的行動可以提供數據的正確頁面返回給視圖。

這也可以讓用戶收藏特定頁面,這可能很有用,甚至只是在必要時刷新當前頁面,而不會丟失它們的位置。

如果該功能可用,您可能還需要傳遞排序信息。

+0

我沒有嘗試過。我可以將當​​前的分頁頁面傳遞到編輯頁面,沒有任何問題。當編輯保存時,我無法將該值傳回控制器。編輯頁面是非常類型的,保存只是一個提交嘗試添加一個額外的參數到這個調用: @using(Html.BeginForm(「IndexEdit」,「CgRefCodes」,FormMethod.Post,new {id =「target」 })) – Chris

0

我發現它是很好的保存在視圖狀態: 例如:

的ViewState(「尋呼」)= 1