簡體   English   中英

如何在.aspx中調用先前的querystring參數

[英]How to call the previous querystring parameter in .aspx

假設我有一個ActionResult方法,該方法具有pageNumber參數和category參數。

用戶應該能夠設置他正在瀏覽的類別,該類別是該類別首頁的ActionLink。 但是,如果我有另一個ActionLink,我將轉到下一頁,則category參數將恢復為默認值。

如何將category參數設置為與上一頁相同。

編輯:本來應該是評論,但大小會增加

對不起,我發現我的問題還不夠清楚,急忙寫了出來。 我正在嘗試做您正在做的事情,但是我沒有將類別設置為1,而是將其設置為加載此頁面時的參數。

方案:我正在瀏覽網站,然后單擊具有此操作鏈接的“鞋子”(categoryID = 3)。 <%=Html.ActionLink("Shoes", "Index", new { categoryID = 3 }) %>

我得到了鞋子的第一頁,然后我不想跳到具有動作鏈接<%=Html.ActionLink(">>>", "Index", new { page = model.currentPage + 1 }) %>我無法在此actionlink代碼中包含categoryID參數,因為在我的通用視圖代碼中,我當然不知道哪個類別處於活動狀態。

因此,當我單擊該按鈕時,它將再次切換到默認類別。

聽起來您需要將類別ID添加為模型對象的屬性,以便在視圖中可用。 因此,您的視圖代碼將如下所示:

<%=Html.ActionLink(">>>", "Index", new { categoryId = model.categoryId, page = model.currentPage + 1 }) %>

我遇到的問題是在調用之間存儲參數,因為Page參數與Category參數無關,並且總是分開添加,然后我失去了另一個參數的值。 例如這里:

  public ActionResult Products(int? page, int? category) { var result = repo.GetAllProductsByCategory(category); result.Skip(PAGE_SIZE * (page -1)).Take(PAGE_SIZE) return View(result); } 

在.aspx內部的偽代碼

actionlink ("Shoes", "Products", new { category = 2 }) actionlink ("Pants", "Products", new { category = 3 }) actionlink ("Hats", "Products", new { category = 4 })

"foreach code shows first page"

actionlink ("next page", Products, new { page = lala.nextPage })

在這里,當我單擊下一頁時,所選擇的類別丟失了,因為它僅引發了“頁碼”的參數。

我本人最終使用Ajax和partialViews來解決此問題,但我也想到了另一種可能可行的簡單方法。 只需將控制器中最后選擇的類別存儲為變量。 像這樣:

  public ActionResult Products(int? page, int? category) { m_category = category; var result = repo.GetAllProductsByCategory(m_category); result.Skip(PAGE_SIZE * (page -1)).Take(PAGE_SIZE) return View(result); } 

這樣,我們就不會忘記用戶翻頁時正在瀏覽的類別。 它仍然需要一些實現,例如,如果用戶瀏覽所有產品而不是特定類別時如何再次將其無效(動作鏈接,其中新類別可能為null)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM