/ / Wie erhalte ich ActionResult von ActionExecutingContext? - .net, redirect, asp.net-mvc-4, aktionsfilter, aktionsergebnis

Wie bekomme ich ActionResult von ActionExecutingContext? - .net, Umleitung, asp.net-mvc-4, Aktion-Filter, Aktionsergebnis

Ich bin auf der Suche nach der Aktion, die dazu geführt hat OnActionExecuting() in einem überschriebenen ActionFilterAttribute. Die Idee ist, dies in der Sitzung zu speichern, damit der Benutzer nach dem Eingeben einer Seite zum Ändern des Kennworts auf die gewünschte Seite umgeleitet werden kann.

Mein aktueller Versuch ist:

public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
{
// ...
ActionResult originatingActionResult = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", actionExecutingContext.ActionDescriptor.ControllerDescriptor.ControllerName },
{ "action", actionExecutingContext.ActionDescriptor.ActionName }
});
// ...

Aber das scheint ziemlich komplex für das, was getan wird - gibt es einen einfacheren Weg?

Antworten:

0 für die Antwort № 1

Es stellte sich heraus, dass es vereinfacht werden könnte als:

ActionResult originatingActionResult = new RedirectToRouteResult(
new RouteValueDictionary(filterContext.RouteData.Values));

Jedoch...

Das Projekt verwendet T4MVC und RedirectToAction konnte nicht verwendet werden, da es auf dem Controller überschrieben wird und erwartet GetT4MVCResult() anwesend sein auf ActionResult.

Also habe ich es stattdessen so gemacht:

RouteValueDictionary originatingRouteValues = new RouteValueDictionary(
actionExecutingContext.RouteData.Values);

// ... followed by ...

return this.RedirectToRoute(routeValues);