2011-01-14 5 views
3

Versuchen, hier Wiederholungen zu vermeiden. Ich habe eine Aktion in einem Basisklassencontroller, die ich nicht ändern darf. Ich möchte, dass meine Aktion einige Prüfungen durchführt, die Basisklassenaktion aufruft und das Ergebnis vor dem Rendern irgendwie ändert. Aber Teil dessen, was ich tun muss, beinhaltet einige Eigenschaften des ViewModel zu ändern, und die Basisklasse gibt einen ActionResult zurück. Ich sehe keinen Weg, um die ViewModel von der ActionResult zu bekommen, und so muss ich vielleicht eine benutzerdefinierte Methode schreiben, von denen die meisten nur nachahmen würde, was die Basisklasse macht. Ich würde es vorziehen, dies nicht zu tun. Irgendwelche Vorschläge?Kann ich ein ViewModel von einem ActionResult abrufen?

Antwort

8

Das liegt daran, ActionResult ist eine ziemlich hohe Basisklasse. Versuchen Sie, es in den entsprechenden Untertyp zu konvertieren, z. B. .

Schnellbeispielcode:

public ActionResult WrapperAction() 
    { 
     // do your initial stuff 


     // call your base controller action and cast the result 
     // it would be safer to test for various result types and handle accordingly 
     ViewResult result = (ViewResult)base.SomeAction(); 

     object model = result.ViewData.Model; 

     // do something with the model 

     return result; 
    } 
+0

Danke, das funktionieren könnte :) – Samo

Verwandte Themen