What about:
public static class ControllerExtensions {
public static ActionResult RedirectReturnUrlOrDefaultAction(this Controller controller, Func<string, ActionResult> returnUrlRedirectAction, Func<ActionResult> defaultAction) {
string returnUrl = controller.Request.QueryString["returnUrl"];
if (!string.IsNullOrEmpty(returnUrl) && controller.Url.IsLocalUrl(returnUrl)) {
return returnUrlRedirectAction(returnUrl);
}
else {
return defaultAction();
}
}
}
This can then be used in the controller as:
return this.RedirectReturnUrlOrDefaultAction(ret => Redirect(ret), () => RedirectToAction("Index"));