簡體   English   中英

在 cshtml 中重用編輯和新建視圖內容的 ASP.NET Core 特定方法

[英]ASP.NET Core specific way to reuse Edit and New view content in cshtml

我有一個基本上包含重復cshtml的 New 和 Edit 視圖。 什么是最有效的重構方法,以便我可以保持 DRY?

我已經查看了 Stack Overflow,我能找到的所有答案都是針對 .NET Framework 的。 我想看看現在是否有更有效的方法來重用代碼,使用 ASP.NET Core。

使用局部視圖或視圖組件是最有效的方法嗎? 還是有另一種 ASP.NET Core 特定的方法來處理這個問題?

局部視圖和視圖組件都允許您集中視圖,並且在方面是可以互換的。 然而,部分視圖包含視圖信息(即,一個cshtml文件)。 相比之下,視圖組件允許您定義預處理邏輯(類似於[HttpGet]控制器操作)。

數據訪問和參數化

重要的是要注意,局部視圖和視圖組件可以將參數或值傳遞給它們。

因此,這兩種方法都可以參數化和/或數據綁定,從而允許它們響應當前狀態。

查看組件特定功能

視圖組件的區別在於能夠在將視圖模型返回到視圖之前通過InvokeAsync()方法定義預處理邏輯,可能包括訪問通過依賴注入注冊的類(例如,通過組合根或依賴注入容器) .

如果您的視圖需要訪問父視圖中不(方便)可用的數據,例如通過依賴項、數據庫或 Web 服務,這將特別有用。 因此,例如,如果您的視圖組件被幾十個不同的視圖使用,但總是需要訪問相似的數據,這可以讓您集中該邏輯,因此您無需在每個控制器中查找它。

示例:考慮到作為視圖組件的一部分查找數據的能力,我經常將它們用於站點導航。 這樣,我不需要在每個[HttpGet]操作中查找導航數據,也不需要將其包含在每個視圖模型中; 它可以是獨立的。 同樣,我將它用於包含常見查找數據的視圖,例如綁定到從 API 或數據庫調用檢索的數據的下拉框。

最有效的方法

至於哪個最“有效”,這是一個相當主觀的問題,如果沒有關於您的用例的更多信息,我們無法回答。

但是,如果 Partial View 滿足您的需求,它肯定是最簡單和最容易的方法:View Component 需要創建和注冊一個附加類以支持您的視圖。

不過,這里的問題可能不是關於效率,而是更多關於您的要求。 如果您的視圖需要額外的預處理來例如修改視圖數據、構建新的視圖模型或收集額外的數據,那么您應該使用視圖組件; 否則,更喜歡局部視圖。

也就是說,鑒於您希望將標記集中在 New 和 Edit 視圖之間,我希望Partial View 能夠滿足您的要求。 兩個視圖可能共享一個現有視圖和綁定模型,並且填充的數據將特定於每個視圖,因此可能不需要集中任何預處理邏輯。

一個潛在的例外是,如果您的新建和編輯表單包含來自數據庫的查找數據(例如下拉列表)。 也就是說,由於這些視圖幾乎肯定是從同一個控制器返回的,因此您可以輕松地在控制器本身中集中查找該數據,而無需依賴視圖組件來為您執行此操作。

暫無
暫無

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

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