Ich muss meinen benutzerdefinierten ModelBinder bis zu meinem DI-Container in MVC 3 verbinden, aber ich kann es nicht funktionieren.Beispiel IModelBinderProvider-Implementierung für ModelBinder-Konstruktorinjektion in MVC 3
So. Dies ist, was ich habe: Ein ModelBinder mit einem Konstruktor injiziert Dienst.
public class ProductModelBinder : IModelBinder{
public ProductModelBinder(IProductService productService){/*sets field*/}
// the rest don't matter. It works.
}
Mein Bindemittel funktioniert gut, wenn ich es so hinzufügen:
ModelBinders.Binders.Add(typeof(Product),
new ProductModelBinder(IoC.Resolve<IProductService>()));
Aber das ist die alte Art und Weise, es zu tun, und ich will das nicht.
Was ich brauche, ist Hilfe, wie dieser Modelbinder bis zu dem IDependencyResolver eingehängt wird, den ich registriert habe.
Laut Brad Wilson verwendet das Geheimnis eine IModelBinderProvider-Implementierung, aber es ist sehr unklar, wie man das verdrahtet. (in this post)
Hat jemand ein Beispiel?
IModelBinderProvider wäre Ihre eigene Implementierung. Es ist nur so passiert, ich schrieb einen Blog-Post über genau diese Sache http://buildstarted.com/2010/12/02/modelbinderproviders-automatic-binding-your-models-is-easy-as-pie/ Hoffe das hilft – Buildstarted
Yeah das funktioniert gut. Ich ersetze einfach den CreateInstance() stuff mit var instance = (IModelBinder) DependencyResolver.Current.GetService (type); Danke! . –
Ich denke immer noch, dass es möglich sein sollte, eine sauberere Implementierung mit Generika zu machen. Ich muss darauf schlafen, denke ich;) –