我有這個菜單,我想讓我的佈局(基本上是我網站上的所有視圖)都可用。我希望在頁面請求中維護菜單的狀態(是否打開或關閉樹項目)。我想要做的是可能有一個從我的佈局頁面調用的子動作,它捕獲包含樹狀態信息的一些cookie或會話信息,以便我可以重新構建樹,確切地說它是最後一次請求的方式。我的問題是,從我讀的內容來看,從控制器的動作中調用諸如Session和Cookie之類的東西是不好的做法。我想知道的是解決這個問題的更優雅的方式。如果我必須使用Cookie和Session,任何人都有如何嘲笑他們的想法?謝謝在視圖中保留菜單樹狀態 - ASP.NET MVC 3
0
A
回答
0
我們可以將菜單作爲部分視圖。
渲染局部視圖的操作將接受渲染狀態的參數。每個鏈接將使用不同的參數調用該操作。
例如,
public PartialViewResult RenderNavigation(int Menuroot, int subMenuItem)
{
IList<MyNavigationItem> navigationItems=GetNavigation();// Some method that'll read nvigationitems.
navigationItems.Where(n=> n.menuId.Equals(Menuroot) ||n.IsOpen.Equals(subMenuItem)).ToList().ForEach(i=> i.IsOpen=true);
return View("SomeMenuView",navigationItems);
}
public class MyNavigationItem{
int menuId{get;set;}
bool IsOpen{get;set;}
int parentMenuId{get;set;} // set default -1 for Root Items
}
1
我的問題是,從我讀,這是不好的做法,那些控制器動作
有趣內調用之類的東西 會話和餅乾從。這篇文章的作者是否解釋了爲什麼這是一種不好的做法?從控制器操作訪問會話和cookie沒有任何問題。實際上,使用會話來處理這種事情可能並不合適,因爲如果用戶關閉瀏覽器,您將無法堅持樹的佈局,而使用持久cookie將是可能的。
+0
謝謝。我記得原因是單元測試。按照相同的方式排序,最好在控制器操作中使用模型綁定,而不是直接訪問FormsCollection。問題是我在佈局上使用了一個子動作,所以我不確定modelbinding是否是一個選項。 – enamrik 2012-01-15 17:12:07
相關問題
- 1. 在jquery菜單中保留狀態
- 2. 菜單狀態 - ASP.Net MVC
- 3. ASP.NET MVC視圖狀態
- 4. ASP.NET/MVC 3狀態
- 5. 在Silverlight中保留狀態3
- 6. Django視圖之間的保留狀態
- 7. 視圖狀態不保留值
- 8. 在MVC中保持狀態3
- 9. 在ASP.NET MVC中保留ViewModels
- 10. asp.net的視圖狀態保持得
- 11. asp.net視圖狀態
- 12. 動態生成選擇菜單不在編輯視圖中保持狀態
- 13. ASP.Net MVC部分視圖保持其模型狀態?
- 14. 在最後點擊的菜單項上保留懸停狀態
- 15. 在Ruby中刷新頁面時記住樹視圖菜單的狀態
- 16. 視圖狀態在asp.net
- 17. asp.net mvc動態javascript菜單
- 18. 在Recycler視圖中保留項目的狀態
- 19. 視圖模型和動態菜單的最佳實踐 - ASP.NET MVC
- 20. ASP.NET MVC - 控件如何保留其狀態
- 21. ASP.NET MVC(表單登錄):視圖狀態MAC驗證失敗
- 22. 在ASP.NET MVC應用程序中的視圖狀態
- 23. 子菜單項目不保留當前狀態
- 24. 保留固定左側菜單的點擊狀態
- 25. 會話狀態的ASP.NET MVC 3
- 26. 如何在asp MVC 2中使用強類型視圖時保留視圖狀態?
- 27. 在ASP.NET MVC應用程序中保留匿名用戶的狀態信息
- 28. 樹視圖位置在asp.net保持
- 29. 在MVC中保留用戶數據3
- 30. 在asp.net頁面中保護密碼視圖狀態
感謝您的迴應!那麼,如何堅持從請求到請求的菜單呢? – enamrik 2012-01-15 07:56:11
不要通過請求去請求。最好把它看成是一頁一頁的。對於每個頁面菜單是不同的。可以在不同參數的每個頁面中調用部分視圖。 – Manas 2012-01-15 17:35:12
所以參數會來自哪裏?請求參數?會議? – enamrik 2012-01-15 17:40:23