, BindModel geçersiz bir ModelBinder oluşturma türünü kontrol ve
public class MyModelBinder
: DefaultModelBinder {
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
if (HasGenericTypeBase(bindingContext.ModelType, typeof(MyType<>)) {
// do your thing
}
return base.BindModel(controllerContext, bindingContext);
}
}
Global.asax içinde varsayılan modeliniz bağlayıcı ayarlayın yapmanız gerekeni yapın
jenerik tabanını eşleştirmek için
protected void Application_Start() {
// Model Binder for My Type
ModelBinders.Binders.DefaultBinder = new MyModelBinder();
}
çekler
private bool HasGenericTypeBase(Type type, Type genericType)
{
while (type != typeof(object))
{
if (type.IsGenericType && type.GetGenericTypeDefinition() == genericType) return true;
type = type.BaseType;
}
return false;
}
Bu soru hâlâ google'ın sonuçlarında oldukça yüksek olduğu için MVC3 ile ortaya çıkan daha iyi bir çözümün [Model Binder Sağlayıcıları] (http://bradwilson.typepad.com/) kullanacağından bahsetmek isterim. Blog/2010/10/hizmet konum PT9-model binders.html). Bu, yaptığınız tek şey, eğer yaptığınız tek şey, _particular_ türünü ciltlemek için özel kurallar eklemeye çalışıyorsa, varsayılan bağlayıcısını değiştirmek zorunda kalmamanızdır, bu da özel model bağlama işlemini çok daha ölçeklenebilir hale getirir. –
Mvc 2 uygulamasında her tür için özel model bağlayıcı ayarlamayı öğrenmek için uğraşıyordum. Ve çözüm budur! Çok teşekkürler! – blazkovicz