[英]ASP.NET MVC Partial Views for Identical Views
我的MVC
項目中有兩個控制器,每個控制器都有一個Weapon
操作/視圖。 這兩個視圖的@model
屬性都設置為WeaponViewModel
,根據視圖的不同,例如,一個視圖ViewModel.Weapon = Axe
和另一視圖ViewModel.Weapon = Sword
。 Axe
和Sword
實現IWeapon
接口,因此具有相同的屬性。
由於每個視圖都呈現相同的WeaponViewModel
,所以我發現兩個視圖具有相同的Razor
代碼是一個過大的選擇。 我_Weapon
是在Shared
文件夾中創建一個名為_Weapon
的視圖,如下所示:
@model WeaponViewModel
//razor code goes here
..並且在兩個視圖中,我現在只有以下代碼:
@model WeaponViewModel
@{ Html.RenderPartial("_Weapon", Model); }
結果有效,但是我的問題是:使用Html.RenderPartial
渲染(本質上)完整視圖是否正確? 另外,如果以后我決定更細化並在共享的_Weapon
視圖中創建其他局部視圖,是否有需要注意的地方?
沒有完全了解您的項目,這聽起來更像是設計方面,而不是技術問題。
對於這種特定情況,您可能需要考慮將所有共享邏輯從每個“武器”移動到可以處理所有武器的單個控制器。
該負責人將負責所有當前和未來武器的所有局部視圖,
而主視圖將根據武器類型調用相關的局部視圖。
就像是:
Html.RenderPartial("~/Views/Weapon/" + Model.Type, Model);
在武器控制器中,您將擁有:
public class WeaponController : Controller
{
public ActionResult Axe
{ //...}
public ActionResult Sword
{ //...}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.