MVC3 / 4 Partial View强制延迟加载关系加载

时间:2012-06-21 15:24:38

标签: asp.net-mvc-3 lazy-loading partial-views

我创建了一个部分视图,显示了资产名称,水体名称和县名称。部分视图基于Asset模型。如果我在资产/明细中,详细信息视图(使用资产模型)会加载部分,如下所示:
@Html.Partial("Summary", Model)

一切都很好,所有三个字段都加载。

如果我在使用AccessInspection模型的 AccessInspections / Edit 中,则部分加载如下:
@Html.Partial("Summary", Model.Asset)

但是,不加载AccessInspection.Asset.Waterbody.Name和AccessInspection.Asset.County.Name。 (我确实得到了Asset.Name值。)

模型与此相关:

资产
.AssetType(单)
.LandLocation(Single)
..水体(单人)
... ID
...名称
..County
... ID
...县
.AccessInspections(Collection)

我猜这与Lazy Loading有关。如何强制相关数据通过?

1 个答案:

答案 0 :(得分:0)

在整理了一些东西之后,这就是我必须做的事情 在Assets中我可以使用Summary(移回到Views \ Assets文件夹中),传递模型如下:
@Html.Partial("Summary", Model)

在Views \ AccessInspections中我不得不为部分调用@ Html.Action,但是控制器必须指定返回PartialView(资产)以正确地将其解析为部分。我可以这样称呼它:
@Html.Action("Summary", "Assets", new { id = Model.Asset.Id })

控制器代码如下所示:

public ActionResult Summary(int id = 0)
{  
    Asset asset = db.Assets.Find(id);  
    if (asset == null)  
    {  
        return HttpNotFound();  
    }  
    return PartialView(asset);  
}