I am working on a project that has page flow controlled by a Controller of the MVC framework. For some complcated pages I must use the Classic WebForm type, rather than a regular View page. 
When the page in Classic ASP.net WebForm has finished its job, the page needs to redirect back to the MVC controller and go to next page decided by the Business logic in the Controller

Here, I listed some redirect code that may be useful.

In classic Web Form page
  protected void btnContinue_Click(object sender, EventArgs e)
        {
            BillingProcess process = CurrentProcess;//BillingmanagementService.GetProcess(Uid);
            process.CurrentStep = BillingManagementStep.TempCreditStart;//this is required, to make sure the current step
            Response.Redirect(ViewMapUti.GetProcessUrl("continue", process.CurrentStep, Uid));
           // Response.Redirect(string.Format("/BillingManage/Process/continue/{0}/{1}",process.CurrentStep, Uid));
        }

In Controller
    protected ActionResult GoToPage(BillingProcess process)
        {
            if (process != null)
            {
                RedirectResult rUrl = CheckIfClassicPage(process);
                if (rUrl != null)
                    return rUrl;
                return View(ViewMapUti.GetMapPage(process.CurrentPage), process);
            }
            else
                return View("Index");
        }
   protected RedirectResult CheckIfClassicPage(BillingProcess process)
        {
            string url = ViewMapUti.GetClassicUrl(process.CurrentStep, process.UidCustomerId);
            if (url != null)
                return Redirect(url);
            else
                return null;

        }


   In Help class ViewMapUti.cs
    public class ViewMapUti
{

// this need put in MapHelper.cs in the root public static String GetMapPage(string key)
{
///TODO:we should have a map in xml do defined which current viwe will be used. ///for example, we have made the change of Page1, rename to page2, but want keep the page2, ///just need add the page1 page2 in the mapfile if(key.Equals("initial",StringComparison.CurrentCultureIgnoreCase))
{
key="StartProcess";
}
return key;
}
public static string GetProcessUrl(string actionButton, BillingManagementStep step, long uid)
{
return GetProcessUrl("Process", actionButton, step, uid);
}
public static string GetProcessUrl(string view, string actionButton, BillingManagementStep step, long uid)
{
if (view == null )
return GetHomeUrl();
/// 1.{controller}/{step}/{uid}/{action}.aspx/{actionButton} // return string.Format("/{0}/{1}/{2}/{3}.aspx/{4}", "BillingManage", step,uid, view, actionButton); ///2. /BillingManage/Process.aspx?uid=121&actionButton=process&step=ProcessingRequest /// return GetVirtualPath() + string.Format("/{0}/{1}.aspx?uid={2}&actionButton={3}&step={4}", "BillingManage", view, uid, actionButton, step);
}
public static string GetHomeUrl()
{
return HttpRuntime.AppDomainAppVirtualPath+"BillingManage/Index.aspx";
}
public static string GetClassicUrl(BillingManagementStep step, long uid)
{
if (step == BillingManagementStep.StartProcess ||step==BillingManagementStep.Initial)
{
//if need classic //Don't use transfer, it will cause javascript error in Ajax sometime(not every time). //Server.Transfer("/Classic/startProcess.aspx?uid=" + uid); return (GetVirtualPath() + "/Classic/startProcess.aspx?uid=" + uid);

}
else if (step == BillingManagementStep.EcouponCredit)
{
return (GetVirtualPath() + "/Classic/EcouponCredit.aspx?uid=" + uid);
}
else if (step == BillingManagementStep.TempCreditStart)
{
return (GetVirtualPath() + "/Classic/TempCredit.aspx?uid=" + uid);
}
return null;
}
public static string GetVirtualPath()
{
return HttpRuntime.AppDomainAppVirtualPath.Equals("/") ? "" : HttpRuntime.AppDomainAppVirtualPath + "/";
}
}