靜態學習MVC3,EF。現在我連接到MySql,但我認爲這不會相關。爲了簡單起見,我決定爲我的測試應用程序使用一個數據庫,並且我添加了一個類別來區分數據。例如,我有一個新聞,事件,信息和網頁類別。現在當在主頁上列出視圖中的內容時,我想列出最新的5個新聞項目(新聞類別),最新的5個事件(事件類別),歡迎文本(信息類別)。我已經能夠創建partialViews在主頁的不同部分列出這些。但我覺得我做錯了,因爲在這些部分視圖的每一箇中,我一遍又一遍地查詢同一個表,並在LINQ查詢中用where cat=....
進行過濾。 您可以確認一下,如果這應該是實踐或有更好的方法來做到這一點。MVC3部分視圖
Q
MVC3部分視圖
2
A
回答
6
你可以做到以下幾點:
控制器:
public ActionResult Home()
{
IEnumerable<MyDateRecords> myData = LinqQueryToGetAllTheDataUnFiltered();
ViewData.Model = new MyViewData { MyData = myData; }
return View();
}
ViewModel類:
public class MyViewData
{
List<MyDataRecords> MyData { get; set; }
List<MyDataRecords> News { get { return MyData.Where(m => m.Category = "News"); } }
List<MyDataRecords> Events { get { return MyData.Where(m => m.Category = "Events"); } }
}
查看:
@model MyViewModel
@Html.Partial("NewsPartial", Model.News)
@Html.Partial("EventsPartial", Model.Events)
部分:
@model IEnumerable<MyDataRecord>
這種方式,我們只查詢的數據一次,剛剛通過一組不同的各分割
0
對於呈現這種類型的數據的簡單方法,你在做什麼很好。您應該查看OutputCacheAttribute以獲取您在控制器上使用的任何PartialView方法。
0
這是非常低效的。但是你注意到這一點很好,因爲查詢數據庫往往是任何請求中的瓶頸。
對於初學者,您應該將數據檢索到字典或模型中,然後將其傳遞給部分視圖以呈現類似於Bassam概述的內容。理想情況下,應該在Controller中關注這一點,以堅持MVC範例,然後傳遞給主視圖,然後將主視圖傳遞給局部視圖。
一旦你得到了更高級的/熟悉ASP.NET MVC,你可以開始研究緩存。因爲你需要開始擔心更新/同步/等等,所以如果你的數據變化很快,那麼我現在就遠離緩存。
相關問題
- 1. MVC3部分視圖與常規視圖
- 2. MVC3部分視圖和Google Analytics(分析)
- 3. MVC3 /部分視圖/多分頁列表
- 4. 用javascript更新部分視圖mvc3
- 5. FancyBox與MVC3中的部分視圖
- 6. ASP.NET MVC3嵌套的部分視圖?
- 7. MVC3客戶端部分視圖驗證
- 8. 如何使用Durandal.js部分視圖,mvc3
- 9. MVC3 - 錯誤呈現部分視圖
- 10. MVC3部分視圖回發不工作?
- 11. ASP.NET MVC3在HTTPPost上的部分視圖
- 12. MVC3表單jQuery部分視圖
- 13. Html.ValidationMessageFor在部分視圖(ASP.NET MVC3)
- 14. MVC3嵌套部分視圖調用Ajax.ActionLink
- 15. 如何渲染MVC3中的部分視圖中的部分?
- 16. ASP.net MVC3 - Razor視圖和部分視圖與Ajax回傳
- 17. ASP.NET MVC3:部分視圖和主視圖之間的交互
- 18. MVC3在一個視圖中的兩個部分視圖
- 19. MVC3部分視圖OutputCache被父視圖覆蓋
- 20. 通過局部視圖MVC3
- 21. MVC3驗證局部視圖
- 22. 局部視圖MVC3剃刀
- 23. MVC3局部視圖位置
- 24. 隱藏部分視圖並在mvc3中顯示另一個局部視圖
- 25. MVC3一個視圖 - 多個部分視圖 - 每個部分視圖一個模型
- 26. 如何驗證asp.net中的內部部分視圖mvc3
- 27. 部分頁面更新,而不使用ASP.NET MVC3中的部分視圖
- 28. 如何在asp net mvc3中將部分視圖的值傳遞給父視圖
- 29. 在部分視圖中傳遞參數 - MVC3/Razor
- 30. 在MVC3中使用JQuery呈現部分視圖
非常感謝@Bassam Mehanni,這是非常精心的 – Diin 2011-12-29 04:03:56
當然..很高興我可以幫助,請注意,在這種風格中,我們添加了所謂的ViewModel,這是一種視圖,可以將這種數據提供給視圖,但是不是真正的完整模型,它應該有簡單的邏輯,直接關係到視圖 – 2011-12-29 04:10:58
你的建議解決方案正在產生錯誤 – Diin 2012-01-19 18:29:41