Вложенный редактор для TemplateName

У меня есть это ViewModel

public EmployerViewModel
{
    public List<EmployerHelper> Employers { get; set; }
}

EmployerHelper
{
    public long ID { get; set; }
    //...
    public List<WageHelper> { get; set; }
}

в ViewEmployers.cshtml:

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

в EditorTemplates\EmployerHelper.cshtml Я имею:

<input type="hidden" asp-for="ID" />

@Html.EditorFor(x => x.Wages, "EmployerWageHelper")

Однако, когда я пытаюсь запустить эту настройку, я получаю:

InvalidOperationException: элемент модели, передаваемый в ViewDataDictionary, имеет тип 'System.Collections.Generic.List`1[...ViewModels.Helper.WageHelper]', но для этого экземпляра ViewDataDictionary требуется элемент модели типа '...ViewModels.Helper.WageHelper.

Вопрос в том, почему первый EditorFor работает как положено, т.е. List<EmployerHelper> к EditorTemplate один за раз. Тем не менее, второй EditorFor проходит весь List из WageHelper к EditorTemplateвместо одного за раз, как и ожидалось. Что я упустил?

Когда я делаю EditorFor(x => Wages) (без template имя) работает нормально. Тем не менее, я не могу использовать это, потому что есть другой template за WageHelper используется для другого метода. Я неправильно понимаю, как templateNameoverride из EditorFor работает или это какая-то ошибка в Razor?

(На данный момент я должен был создать EmployerWageHelper который является дубликатом WageHelper чтобы обойти эту проблему.)

0 ответов

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