2009-08-25 9 views
0

Ich bin nicht sicher, ob dies möglich ist, aber ich möchte Objekte sehen, die von meinen ModelBinders erstellt wurden, außer dass sie als Parameter an meine Action-Methoden übergeben werden.Zugriff auf Objekte, die von ModelBinders in ActionFilters erstellt werden

I.e. Ich mag einen FooBinder und einen BarBinder registrieren, dann schauen Sie in einem Foo in der folgenden Methode

public void MyAction(Bar bar) 

oder sogar idealerweise in einer Action.

Ist das möglich?

Antwort

2

diese zuzugreifen:

public ActionResult FizzAction(object foo) // <-- 
    {...} 

Verwenden Sie diese in Ihrem Filter:

public class BarFilter : ActionFilterAttribute 
{ 
public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    var foo = filterContext.ActionParameters["foo"]; 
    //do whatever you want with it 
} 
} 

EDIT:

Für ActionMethodSelectorAttribute dies helfen könnten:

public class foo : ActionMethodSelectorAttribute 
    { 
     public override bool IsValidForRequest 
      (ControllerContext controllerContext, MethodInfo methodInfo) 
     { 
      ValueProviderResult valueResult; 
      controllerContext.Controller.ValueProvider 
       .TryGetValue("foo", out valueResult); 
     } 
    } 

Schauen Sie sich this blog post von K. Scott Allen.

Keine Garantie - habe ich nicht selbst benutzt - nur durch das Überwachungsfenster gefunden. :)

+0

Dank Arnis. Das ist absolut die richtige Antwort. Ich habe jedoch gerade festgestellt, dass es eigentlich kein ActionFilter ist, auf den ich zugreifen möchte, sondern ein ActionMethodSelectorAttribute. Ich schätze, das ist nicht möglich ...? – Gaz

+0

ein Moment ... –

+0

Hat meine Post bearbeitet. Ich hoffe, es hilft. –

Verwandte Themen