靜態學習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嵌套部分視圖調用Ajax.ActionLink
- 4. MVC3 - 錯誤呈現部分視圖
- 5. FancyBox與MVC3中的部分視圖
- 6. 如何使用Durandal.js部分視圖,mvc3
- 7. ASP.NET MVC3嵌套的部分視圖?
- 8. ASP.net MVC3 - Razor視圖和部分視圖與Ajax回傳
- 9. MVC3在一個視圖中的兩個部分視圖
- 10. ASP.NET MVC3:部分視圖和主視圖之間的交互
- 11. MVC3局部視圖位置
- 12. 局部視圖MVC3剃刀
- 13. 如何驗證asp.net中的內部部分視圖mvc3
- 14. 部分頁面更新,而不使用ASP.NET MVC3中的部分視圖
- 15. Request.IsAuthenticated不工作在IE重複部分視圖MVC3
- 16. 使用MVC3創建部分視圖爲選項卡
- 17. 在MVC3中使用JQuery呈現部分視圖
- 18. MVC3 Razor部分視圖不會發送回控制器
- 19. MVC3部分視圖和模型不回發更改
- 20. 如何加載在mvc3按鈕單擊部分視圖
- 21. 使用MVC3和c#,從控制器調用部分視圖
- 22. MVC3 - 正在緩存AJAX部分視圖...我無法阻止它
- 23. MVC3部分視圖 - Ajax.BeginForm還是Ajax.ActionLink更好?
- 24. MVC3部分視圖腳本不起作用
- 25. 從ajax觸發jquery在mvc3中加載部分視圖
- 26. MVC3 - 將數據傳遞到模型外部分視圖
- 27. MVC3部分視圖模式對話框被調用兩次
- 28. MVC3:如何發佈包含部分視圖的表單?
- 29. MVC3在部分視圖中渲染腳本
- 30. 在部分視圖中傳遞參數 - MVC3/Razor
非常感謝@Bassam Mehanni,這是非常精心的 – Diin 2011-12-29 04:03:56
當然..很高興我可以幫助,請注意,在這種風格中,我們添加了所謂的ViewModel,這是一種視圖,可以將這種數據提供給視圖,但是不是真正的完整模型,它應該有簡單的邏輯,直接關係到視圖 – 2011-12-29 04:10:58
你的建議解決方案正在產生錯誤 – Diin 2012-01-19 18:29:41