在MyMainView中,我有多个PartialViews。
每个PartialView都强烈地键入MyMainView中公开的属性,每个局部视图也包含一些常见信息。
例如
public class MainModel
{
public SubModel1 { get; set; }
public SubModel2 { get; set; }
public SubModel3 { get; set; }
public CommonStuff { get; set; }
}
是否有一种公认的做法来实现共同财产的共享?
我在考虑在SubModel中有一个属性,它反映回其父级。这是推荐/不推荐的吗?
例如
public class SubModel1
{
public int Number { get; set; }
public MainModel ParentModel { get; set; }
}
这里的主要目标是避免一遍又一遍地加载相同的数据。
对于我目前正在查看的模型,它是一系列在View中共享的LookUp词典,用于下拉列表等内容。
答案 0 :(得分:0)
您可以使用子操作。 Phil Haack blogged关于他们。通过这种方式,您可以将整个公共功能封装到一个独立的模型/控制器/视图生命周期中,该生命周期与主要模型/控制器/视图生命周期不同,并将其嵌入为小部件。
答案 1 :(得分:0)
这post将帮助您解决困惑。
在您的情况下,您可能需要在主操作中查询完整模型并将其提供给主视图。从主视图将主模型传递到部分视图,这些部分视图既依赖于子模型,也依赖于使用Html.RenderPartial
的公共属性,或者只有部分视图的子模型,只需要那些。
如果要在局部视图中显示子模型并且局部视图不依赖于主模型,则应使用子操作,只需部分视图完全独立于主要观点。
您也可以选择子操作,假设您需要为特定部分应用缓存行为。
您可以避免子操作,假设您希望在同一视图中的两个或多个部分视图中显示相同的模型,因为您必须反复查询数据。
因此,解决方案是您应该根据上述评论明智地选择子操作或Html.RenderPartials。