Skip to content

Instantly share code, notes, and snippets.

@curtiskeisler
Forked from duncansmart/TransferToRouteResult.cs
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save curtiskeisler/c35b0a05dfe1ac3b34cd to your computer and use it in GitHub Desktop.
Save curtiskeisler/c35b0a05dfe1ac3b34cd to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Foo.Bar
{
// Adpated from http://stackoverflow.com/questions/799511/how-to-simulate-server-transfer-in-asp-net-mvc
public class TransferToRouteResult : ActionResult
{
public string RouteName { get; set; }
public RouteValueDictionary RouteValues { get; set; }
public TransferToRouteResult(RouteValueDictionary routeValues)
: this(null, routeValues)
{
}
public TransferToRouteResult(string routeName, RouteValueDictionary routeValues)
{
this.RouteName = routeName ?? string.Empty;
this.RouteValues = routeValues ?? new RouteValueDictionary();
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
var urlHelper = new UrlHelper(context.RequestContext);
var url = urlHelper.RouteUrl(this.RouteName, this.RouteValues);
context.HttpContext.Server.TransferRequest(url, true);
}
}
public static class ControllerExtensions
{
public static TransferToRouteResult TransferToAction(this Controller controller, ActionResult result)
{
return new TransferToRouteResult(result.GetRouteValueDictionary());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment