[英]ASP.NET MVC: When to use custom HTML helper methods vs Html.RenderAction?
關於何時使用自定義輔助方法以及何時使用RenderAction以及何時簡單地使用ViewData,我有點不清楚。 它們的一些功能略有重疊。
例如,如果我要創建一個類別導航欄,我是否會創建一個新的輔助方法並將其放在某個局部視圖中? 我最初雖然這樣做,但我在一些博客上讀到使用RenderAction代替。 我一直在思考,並且可以使用一些幫助而不僅僅是這個例子,但總的來說。
假設類別列表來自某些數據源。
我遵循的一般准則是:
HtmlHelper方法:
渲染部分:
渲染動作:
ViewData的:
我將使用ViewData來跟蹤適用於所有視圖的全局數據,例如當前用戶。 如果我需要一種顯示此數據的一致方法,我通常會為它創建一個部分,然后在母版頁中執行RenderPartial()。
首先,這可能很清楚,但是我們可以這樣說:類別業務邏輯(例如,從數據源獲取數據)不應該在Html幫助程序中或在用戶控件中:它應該在控制器中完成。
1)RenderPartial / HtmlHelper與2)RenderAction之間的區別在於該業務邏輯在哪個控制器中:
如果您在幾乎每個頁面中使用類別數據,我認為在頁面控制器操作級別上為每個頁面獲取它並不是錯誤的,並將其傳遞給視圖數據。 當然你會使用一些機制(自定義模型基類,擴展控制器......),這樣你就不會在每個動作中都有相同的類別獲取函數調用(假設你有很多)。
如果某些頁面視圖選擇顯示類別,有些不是,有些可能有另一個具有不同業務邏輯的類別控件,那么RenderAction肯定更好。 即使在上述情況下,RenderAction也很好:它將類別提取與控制器操作中的其他數據分開。
然后是否使用RenderPartial或HtmlHelper ......對我而言,HtmlHelpers應該更通用,而不是特定於特定視圖或模型,但我認為,這比MVC視角中的明確規則更具品味:兩者都應該只是View-邏輯。
當場景滿足以下條件時,我會選擇html輔助方法:
如果你有一個使用模型數據的html輔助方法,或者它有很多依賴項,那么它可能更適合作為RenderPartial或RenderAction。
我也是使用RenderAction的新手
但是當我需要為特定的顯示器加載數據時,我現在使用RenderAction
非常適合加載標簽雲,標簽雲顯示在每個頁面上,但數據並非特定於頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.