2009-03-16 11 views
0

Gibt es ein Attribut, das die Modellbindung für komplexe Aktionsparameter deaktivieren kann?Bypass-Modell Binder in asp.net MVC für komplexe Aktionsparameter?

Mein Szenario ist das: Ich benutze Linq zu SQL, aber die generierten Klassen implementieren Schnittstellen. Zum Beispiel IUser. Einige meiner Controller-Aktionen akzeptieren IUser-Parameter, und einige meiner Ansichten binden IUser-Modelle, aber ich möchte nicht, dass der Standardmodellbinder sie erstellt. Ich benutze dafür Action Filter. Die Idee dahinter ist, dass wenn eine Aktion Benutzerdetails benötigt, der Aktionsfilter diese aus der Datenbank holt, bevor die Aktion aufgerufen wird.

Um den Fehler zu umgehen, der auftritt, wenn der DefaultModelBuilder aktiviert wird, habe ich einen Nullmodell-Binder erstellt, der null von CreateModel zurückgibt.

Antwort

0

Wäre es nicht einfacher, der Architektur zu folgen und einen IUser-Binder zu erstellen, der das tut, was Ihr Aktionsfilter tut? Derzeit pervertieren Sie den Aktionsfilter, um etwas zu tun, was nicht vollständig beabsichtigt ist, und dabei haben Sie auch den Erweiterungspunkt ignoriert, der speziell dafür entworfen wurde, das zu tun, was Sie erreichen möchten (eine Instanz eines Parameters auf eine bestimmte Weise erstellen). .

Gibt es einen guten Grund, dass Sie den IUser im Aktionsfilter und nicht mit einem benutzerdefinierten Binder erstellen?

Verwandte Themen