У меня есть простая Poco-модель, использующая абстрактные классы и, похоже, не работает с ModelBinder по умолчанию для Asp.net MVC 2. В одном элементе есть несколько объектов в коллекции , все с использованием того же абстрактного базового класса.Asp.Net MVC 2 Ошибка DefaultModelBinder с использованием абстрактных классов
Модель:
public partial class Item
{
public virtual ICollection<Core.Object> Objects
{
get
{
return _objects;
}
set
{
if (value != _objects)
{
_objects = value;
}
}
}
private ICollection<Core.Object> _objects;
}
public abstract partial class Object
{
public virtual Item Item
{
get
{
return _item;
}
set
{
if (!Object.ReferenceEquals(_item, value))
{
_item = value;
}
}
}
private Item _item;
}
public partial class TextObject : Object
{
public virtual string Text { get; set; }
}
Instance:
var NewItem = new Item();
var TextObject1 = new TextObject
{
Text = "Text Object Text",
Item = NewItem
};
List<Core.Object> objects = new List<Core.Object>(){TextObject1};
NewItem.Objects = objects;
Использование по умолчанию Html.EditorForModel() Helper для этого элемента с одним TextObject в коллекции Objects я получаю HTML ввода-поле подобное :
<input class="text-box single-line" id="Objects_0__Text" name="Objects[0].Text" type="text" value="Text Object Text" />
При отправке обратно на контроллер я получаю сообщение «Невозможно создать абстрактный c lass "Errormessage из Default ModelBinder. Очевидно, связующее пытается создать этот абстрактный базовый класс. Но я не знаю, почему, поскольку в коллекции есть только объект унаследованного типа TextObject. Есть ли какой-либо другой способ заставить это работать без написания пользовательского Modelbinder?
Спасибо, я дам automapper попробовать. Вы бы порекомендовали иметь n списков производных типов объектов, а затем в viewmodel? (Список, Список и т. Д.) –
user250773