Q:

Access HtmlHelpers from WebForm when using ASP.NET MVC

I am adding a WebForm from which I would like to resolve routes to URLs.  For example, in MVC I would just use 
return RedirectToAction("Action", "Controller");

So, if you have a way of getting to that same URL from a WebForm in the same application, it would be appreciated.

A:

Try something like this in your Webform:
<% var requestContext = new System.Web.Routing.RequestContext(
       new HttpContextWrapper(HttpContext.Current),
       new System.Web.Routing.RouteData());
   var urlHelper = new System.Web.Mvc.UrlHelper(requestContext); %>

<%= urlHelper.RouteUrl(new { controller = "Controller", action = "Action" }) %>

A:

Revised version of the code above for PageCommon ... as it currently is it breaks.
public static class MvcPages{
public static UrlHelper GetUrlHelper(this System.Web.UI.Control c)
{
    var helper = new System.Web.Mvc.UrlHelper(c.Page.Request.RequestContext);
    return helper;
}

public static HtmlHelper GetHtmlHelper(this System.Web.UI.Control c)
{
    var httpContext = new HttpContextWrapper(HttpContext.Current);
    var controllerContext = new ControllerContext(httpContext, new RouteData(), new DummyController());
    var viewContext = new ViewContext(controllerContext, new WebFormView(controllerContext, "View"), new ViewDataDictionary(), new TempDataDictionary(), TextWriter.Null);

    var helper = new HtmlHelper(viewContext, new ViewDataBag());
    return helper;
} 

private class ViewDataBag : IViewDataContainer
{
    ViewDataDictionary vdd = new ViewDataDictionary();
    public ViewDataDictionary ViewData
    {
        get
        {
            return vdd;
        }
        set
        {
            vdd = value;
        }
    }
}

private class DummyController : Controller
{

}

}

