簡體   English   中英

相同視圖的ASP.NET MVC部分視圖

[英]ASP.NET MVC Partial Views for Identical Views

我的MVC項目中有兩個控制器,每個控制器都有一個Weapon操作/視圖。 這兩個視圖的@model屬性都設置為WeaponViewModel ,根據視圖的不同,例如,一個視圖ViewModel.Weapon = Axe和另一視圖ViewModel.Weapon = Sword AxeSword實現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.

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