ASP.NET MVC: контейнер доступа из EditorTemplate
У меня есть модель представления AssetFreezeViewModel.cs, которая содержит следующее свойство:
public AssetFreezeAccountBalanceViewModel AccountBalanceInfo { get; set; }
У меня есть представление Details.cshtml, основанное на ViewModel выше с этой строкой:
@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 равен нулю, а затем происходит сбой.
Как я могу получить доступ к контейнеру (= parent) из этого EditorTemplate, который на 2 уровня ниже его представления?
1 ответ
Я только добавил @model AssetFreezeAccountBalanceViewModel
На вершине AssetFreezeAccountBalanceViewModel.cshtml
Вот пример проекта.
Надеюсь, это поможет.