【问题标题】:MVC3/4 Partial View force lazy loaded relations to loadMVC3/4 Partial View 强制加载延迟加载的关系
【发布时间】:2012-06-21 23:50:03
【问题描述】:

我创建了一个显示资产名称、水体名称和县名称的局部视图。局部视图基于 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(单个)
.LandLocation(单人)
..水体(单)
...ID
...名称
..县
...ID
...县
.AccessInspections(集合)

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

【问题讨论】:

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


    【解决方案1】:

    整理了一些东西后,这就是我必须做的。
    在 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);  
    }
    

    【讨论】:

    • 我不知道为什么它没有加载,但您也可以尝试使用 .Include() 来急切加载这些关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多