簡體   English   中英

什么時候適合使用Html.RenderAction()?

[英]When Is It Appropriate to Use Html.RenderAction()?

我有點不確定何時使用Html.RenderAction()來渲染我的視圖以及何時不使用它。 我的理解是,因為它不是ASP.NET MVC的“官方”組件,所以使用它是不好的做法,它的初衷是用於任何特定Controller上下文中都不存在的可重用小部件。

問題是,當我需要一個存在於不同Controller下的組件時,RenderAction非常有用,而不是我當前渲染View的那個。 我認為這是一種非常整潔和自包含的方式來呈現依賴於當前視圖中不可用的數據的組件。 My View不需要提供Model,就像我使用RenderPartial()

這是不好的做法嗎? 有沒有更好的辦法?

它可以解決你的問題。

我認為這是一種非常整潔和自包含的方式來呈現依賴於當前視圖中不可用的數據的組件。 My View不需要提供Model,就像我使用RenderPartial()一樣

它實際上是。 例如,您可以創建一些小視圖作為小部件,並將它們注入到您需要的任何位置。 然而,從這些小部件處理用戶輸入可能甚至變得復雜,但這是另一個問題。

我能想到的另一個合法場景是使用HTML電子郵件模板。 這是一種情況,當您顯然不需要將呈現的輸出直接返回到瀏覽器,而是將其插入到電子郵件正文中。

我使用Html.RenderAction()是出於你給出的原因,這樣你就不必一遍又一遍地向每個需要顯示用戶信息的視圖提供相同的數據(例如)。 您可以認為它違反了mvc模式,因為視圖現在知道控制器。 但我認為這種情況下的優勢超過了這一點,您的應用程序將更加干燥。

我只是將它用於我需要在許多不同的地方重用的所有內容(例如我在主頁的每個頁面上顯示的用戶數據),我不想將這些信息顯式發送到每個視圖。 如果我沒弄錯的話,我認為他們也將它包含在asp.net mvc 2中,所以它現在已成為框架的一部分。

我發現一個很好的理由在基於父視圖模型的結果的場景中使用Html.RenderAction。 例如,父視圖的模型具有必須在表中顯示的List屬性。 但是,為了防止父視圖中的條件IF / ELSE,我調用了Html.RenderAction()。 該操作接受List並檢查計數。 如果計數為零,則返回“無結果”視圖; 否則,它返回一個視圖,以自己的模型的形式處理List中的項目。 通過防止在視圖中插入邏輯,這是更清晰的。 我還可以在我的應用中為其他區域重復使用“無結果”視圖。

暫無
暫無

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

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