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?
3
A
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;
}
Danke, das funktionieren könnte :) – Samo