Yeni bir ModelBindingContext oluşturduğunuzda ve MVT 2 önizlemesinde 2 veya daha yüksek bir ModelType özelliği, ayarlamaya çalıştığınızda bu hatayı alırsınız. Eğer açıklandığı gibi
Ben MVC 2 önizleme 2 güncellendi 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;
}
, ben aynı hata var: Örneğin, MVC eski sürümlerinde özel modeli ciltteki için bir birim test, aşağıdaki gibi bir kodu vardı . düzeltme bu bu kodu değiştirmek oldu: Ben ModelType atama kaldırdık
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;
}
Not ve ModelMetadata bir atama ile değiştirilir. Visual Studio, hangi kodun aslında bu hatayı attığını söylemelidir.
Şimdi bunu deneyeceğim, teşekkürler - Bir süredir burada sensiz kalırdım. Ancak bu bir hatadır? Yanlış yaptığımız bir şey mi? – LiamB
Tıpkı Dll'si (Hat 47 DataAnnotationsModelBinder.cs) hatayı 'var innerContext = new ModelBindingContext() { Model = propertyDescriptor.GetValue (bindingContext.Model), ModelAdı = fullPropertyKey, ModelState = buldum eklemek bindingContext.ModelState, ModelType = propertyDescriptor.PropertyType, ValueProvider = bindingContext.ValueProvider }; ' – LiamB
Kodunuz completley diferansiyel nesneleri kullanıyor gibi görünüyor? – LiamB