Я надеюсь, что здесь не пропущено что-то невероятно очевидное, но есть ли причина, по которой связыватель модели всегда испытывает проблемы с привязкой модели представления, которая наследуется из коллекции?
Допустим, я хочу показать постраничнуюсоставить список и отобразить поле со списком и добавить кнопку над ним (работа с простыми списками).Вовлеченные классы будут выглядеть так:
public class PagedList<T> : List<T>
{
public int TotalCount { get; set; }
}
И тогда модель представления будет выглядеть так:
public class MyViewModel : PagedList<ConcreteModel>
{
public IEnumerable<ChildModel> List { get; set; }
public int? SelectedChildModelId { get; set; }
}
Итак, в представлении (Razor):
@model MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(model => model.SelectedChildModelId, new SelectList(Model.List, "ChildModelId", "DisplayName"))
}
И действие контроллера HttpPost:
public ActionResult(MyViewModel viewModel)
{
...
}
Приведенное выше приведёт к тому, что viewModel в ActionResult будет нулевым.Есть ли логическое объяснение этому?Из того, что я могу сказать, это специфично только для просмотра моделей, которые наследуются из коллекций.
Я знаю, что могу обойти это с помощью пользовательского связующего, но задействованные свойства являются примитивными типами и даже не имеют обобщений или наследования.
Я переработал модели представления, чтобы унаследованный тип коллекции имел свойства, и это устраняет проблему.Тем не менее, я все еще ломаю голову над тем, почему на него ломается переплет.Любые конструктивные мысли приветствуются.