public static string ActionAbsolute(this UrlHelper url, string actionName, string controllerName, object routeValues)
{
Contract.Requires<ArgumentNullException>(url != null);
Contract.Requires<ArgumentException>(url.RequestContext != null);
Contract.Requires<ArgumentException>(url.RequestContext.HttpContext != null);
Contract.Requires<ArgumentException>(url.RequestContext.HttpContext.Request != null);
Contract.Requires<ArgumentException>(url.RequestContext.HttpContext.Request.Url != null);
Contract.Requires<ArgumentException>(url.RequestContext.HttpContext.Request.RawUrl != null);
var relativeUrl = url.Action(actionName, controllerName, routeValues);
if (string.IsNullOrEmpty(relativeUrl))
return relativeUrl;
return new Uri(GetBaseUrl(url), relativeUrl).AbsoluteUri;
}