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

Вот пример проекта.

Надеюсь, это поможет.

Другие вопросы по тегам