我有一个包含以下属性的视图模型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 访问容器(= 父级)?