0

在 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; }
}

这里的主要目标是避免一遍又一遍地加载相同的数据。

对于我目前正在查看的模型,它是一系列在视图中共享的查找字典,并用于下拉列表等内容。

4

2 回答 2

0

您可以使用子操作。Phil Haack在博客上介绍了他们。这样,您可以将整个通用功能封装到一个单独的模型/控制器/视图生命周期中,该生命周期与主要生命周期不同,并将其嵌入为小部件。

于 2012-06-12T15:51:55.843 回答
0

这篇文章将帮助您解决困惑。

在您的情况下,大多数情况下您可能必须在主要操作中查询完整模型并将其提供给主视图。从主视图将主模型传递到依赖于子模型以及公共属性的局部视图,Html.RenderPartial或者仅将子模型传递给仅需要的局部视图。

如果您在局部视图中显示子模型并且该局部视图不依赖于主模型,您应该使用子操作,只是局部视图完全独立于主视图

假设您需要为特定部分应用缓存行为,您还可以执行子操作。

假设您想在同一视图的两个或多个局部视图中显示同一模型,您可以避免子操作,因为您必须一次又一次地查询数据。

因此,解决方案是您应该根据上述评论明智地选择子操作或 Html.RenderPartials。

于 2012-06-12T17:39:47.620 回答