TransferToAction for ASP.NET MVC 5

In addition to the RedirectToAction method inside a Controller, I want to be able to use a Server.Transfer inside my actions.
This can be useful, if you want to redirect without changing the URL(routing).
I also want to ensure that an action is only accessible by a transfer request - similar to ChildActionOnly-attribute.

After searching for an existing solution without success (not a complete solution) I came up with the following code.

The usage is very simple:

The transfer implementation is inside a custom ActionResult and can be easily called trough an extension.

To make the TransferActionOnly-attribute possible, a query string marker is used.

You can do anything you want with this code, but don’t hold me liable 🙂

Comments (1)

  1. Carlos Osoria says:

    While trying to implement this solution I noticed that the route data was not being correctly forwarded to the TransferRequest method, the is fix to remove the double wrapping of the route data in the TransferToRouteResult constructor like so

    public TransferToRouteResult(string actionName, string controllerName, RouteValueDictionary routeValues)
    ActionName = actionName;
    ControllerName = controllerName;
    RouteValues = routeValues ?? new RouteValueDictionary();

Skip to main content