Wie erstelle ich eine benutzerdefinierte binder Modell mit der `BindModel(HttpActionContext actionContext... " Signatur?
Ich muss wissen, wie man erstellen Sie eine benutzerdefinierte IModelBinder
in MVC 4 und es wurde geändert.
Das neue Verfahren, das umgesetzt werden muss ist :
bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es 2 IModelBinder Schnittstellen:
System.Web.Mvc.IModelBinder
, die ist die gleiche wie in früheren Versionen und hat sich nicht geändert,System.Web.Http.ModelBinding.IModelBinder
die durch die Web-API und die ApiController. Also im Grunde innerhalb dieser Methode müssen Sie dieactionContext.ActionArguments
auf die entsprechenden Werte. Sie nicht mehr zurück, eine model-Instanz.global.asax.cs
mitGlobalConfiguration.Configuration.ServiceResolver.GetServices...
Dieser link, zur Verfügung gestellt von Steve, bietet eine Antwort. Ich bin das hinzufügen es hier zur Referenz. Kredit geht an dravva auf asp.net Foren.
Erstellen Sie zunächst eine Klasse abgeleitet von
IModelBinder
. Wie Darin erklärt, dass dieSystem.Web.Http.ModelBinding
namespace und nicht die bekannten MVC entspricht.Als Nächstes geben Sie ein Anbieter fungiert als Fabrik für Ihre neue Sammelmappe und alle anderen Bindemitteln, die Sie möglicherweise in der Zukunft hinzuzufügen.
Schließlich gehören die folgenden, die in Ihrer Global.asax.cs (z.B., Application_Start).
Nun, Sie können nur delare der neue Typ als parameter in der action-Methoden.
oder sogar
Einen noch einfachen Weg, um einen modelbinder ohne ModelBinderProvider ist diese:
Einen Beitrag RC-update zu Todd ' s post:
Indem Sie Ihre Modell-binder-Anbieter vereinfacht worden: