0

我创建了一个显示资产名称、水体名称和县名称的局部视图。局部视图基于 Asset 模型。如果我在Assets/Detail中,Detail 视图(与 Asset 模型一起使用)会像这样加载部分:
@Html.Partial("Summary", Model)

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

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

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

这些模型的相关性如下:

资产
.AssetType (Single)
.LandLocation (Single)
..Waterbody (Single)
...ID
...名称
..County
...ID
...County
.AccessInspections (Collection)

我猜这与延迟加载有关。如何强制相关数据通过?

4

1 回答 1

0

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

在 Views\AccessInspections 中,我必须为部分调用 @Html.Action,但控制器必须指定 return PartialView(asset) 才能将其正确解析为部分。我可以这样称呼它:
@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);  
}
于 2012-06-21T15:50:03.020 回答