[英]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.