Roar
Roar

Reputation: 2167

How to make RedirectToAction in Controller extension

I'm trying to make an extension

public static ActionResult RedirectToIndexAction(this Controller controller)
        {
            return RedirectToAction("Index");
        }

for RedirectToAction("Index") makes RedirectToIndexAction();

Upvotes: 1

Views: 732

Answers (1)

Aadil
Aadil

Reputation: 71

HOw about something like below :

public static RedirectToRouteResult RedirectToAction<TController>(this Controller controller, Expression<Action<TController>> action, object routeValues) where TController : Controller
    {
        RouteValueDictionary routeValuesFromExpression = ExpressionHelper.GetRouteValuesFromExpression(action); 

        var routeValueDictionary = new RouteValueDictionary(routeValues); 
        foreach (KeyValuePair<string, object> keyValuePair in routeValueDictionary)
        {
            routeValuesFromExpression.Add(keyValuePair.Key, keyValuePair.Value);
        }
        return new RedirectToRouteResult(routeValuesFromExpression);
    }


     private RedirectToRouteResult RedirectToIndex()
    {
        return this.RedirectToAction<MyController>(c => c.Index(), new { Area = "" });
    }

Upvotes: 1

Related Questions