В сценарии, например, у вашего MyType
нет конструктора по умолчанию (для связующего устройства по умолчанию требуется конструктор по умолчанию).
Это может произойти, если вы используете шаблон фабричного метода для создания нового объекта (очень простой пример только для иллюстрации ;-):
public class MyType
{
private MyType() // prevent direct creation through default constructor
{
}
public static MyType CreateNewMyType()
{
return new MyType();
}
}
Тогда вам нужно будет реализовать пользовательский связыватель моделей, который вызывает фабричный метод CreateNewMyType()
вместо создания нового MyType
через отражение:
public class MyTypeBinder : DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext,
ModelBindingContext bindingContext,
Type modelType)
{
return MyType.CreateNewMyType();
}
}
Также, если вас не устраивает текущая функциональность или реализация связующего устройства по умолчанию, вы можете легко заменить его на собственную реализацию.