2

我有一个包含以下属性的视图模型AssetFreezeViewModel.cs :

public AssetFreezeAccountBalanceViewModel AccountBalanceInfo { get; set; }

我有一个基于上面 ViewModel的视图Details.cshtml :

@Html.EditorFor(x => x.AccountBalanceInfo)

在 \Views\Shared\EditorTemplates\ 中,我有一个模板 AssetFreezeAccountBalanceViewModel.cshtml,其名称与 AccountBalanceInfo 的类型相同,即 AssetFreezeAccountBalanceViewModel (按照约定)

在那个 EditorTemplate 中,我有:

@Html.EditorFor(model => model.DeviseId)

AssetFreezeAccountBalanceViewModel.cs中,我有:

[UIHint("DropDownList")]
public Int16? DeviseId { get; set; }

public IEnumerable<SelectListItem> DeviseIdList { get; set; }

最后,在 \Views\Shared\EditorTemplates\ 我有DropDownList.cshtml(按约定应用于 DeviseId):

@model dynamic
@{
    var propertyNameLookup = this.ViewData.ModelMetadata.PropertyName + "List";
    var property = this.ViewData.ModelMetadata.Container.GetType().GetProperty(propertyNameLookup);
...
}

当代码点击 @Html.EditorFor(model => model.DeviseId) 时,我们输入 DropDownList.cshtml ,其中Container为 null 然后崩溃。

如何从低于其视图 2 级的 EditorTemplate 访问容器(= 父级)?

4

1 回答 1

0

我刚刚@model AssetFreezeAccountBalanceViewModel在顶部添加了AssetFreezeAccountBalanceViewModel.cshtml

这是一个示例项目

希望有帮助。

于 2016-10-21T01:11:41.497 回答