Вы получите эту ошибку, когда создадите новый ModelBindingContext, а затем попытаетесь установить свойство ModelType, в MVC 2 Preview 2 или выше. Например, в модульном тесте для пользовательского связующего компонента более старые версии MVC, у меня был код, подобный следующему:
internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class
{
var mbc = new ModelBindingContext()
{
ModelName = prefix,
ModelState = modelState,
ModelType = typeof(T),
ValueProvider = collection.ToValueProvider()
};
IModelBinder binder = new MyModelBinder();
var cc = new ControllerContext();
return binder.BindModel(cc, mbc) as T;
}
Когда я обновился до MVC 2 preview 2, я получил ту же ошибку, что вы описали. Исправление было изменить этот код на это:
internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class
{
var mbc = new ModelBindingContext()
{
ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(T)),
ModelName = prefix,
ModelState = modelState,
ValueProvider = collection.ToValueProvider()
};
IModelBinder binder = new MyModelBinder();
var cc = new ControllerContext();
return binder.BindModel(cc, mbc) as T;
}
Обратите внимание, что я удалил назначение ModelType и заменил его назначением для ModelMetadata. Visual Studio должна сообщить вам, какая строка кода на самом деле выдает эту ошибку.