Я хочу использовать updateModel в контроллере, который не имеет уведомления о типе представления.
У меня есть разные представления, которые имеют разные типы, но у всех есть класс ExternalBase как унаследованный тип.
Так что в моем контроллере всегда есть ExternalBase, но контроллер не знает правильный тип.
При сохранении я вызываю метод, который получает правильный объект, но возвращает его как externalBase. Внутренний тип - мой правильный тип. Если я наведу курсор мыши на свой объект, это тип представления, который вызывает сохранение. Теперь, если я вызываю updateModel, он не заполняет свойства.
Как пример:
// MyExternalBase - пустой класс
Класс человека
public class Person
: MyExternalBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<TheParameters> Parameters { get; set; }
public Address Address { get; set; }
public TheParameters[] OtherParameters { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public TheParameters Parameter { get; set; }
}
public class TheParameters
{
public string Parameter { get; set; }
}
В моем контроллере при сохранении я делаю следующее:
MyExternalBase p = new Person();
UpdateModel(p, "Person", form.ToValueProvider());
Теперь буква p не заполняется.
Если я вместо этого использую Person p = new Person (), тогда это не проблема. Но я хочу, чтобы мой контроллер не зависел от типа представления.
Это ошибка в updateModel или что-то, что просто невозможно?
Или это обходной путь?