/// <summary>
        /// Returns the string output from a ViewResultBase object
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="viewResult"></param>
        /// <returns></returns>
        public static string RenderViewResultAsString(this ControllerContext controllerContext, ViewResultBase viewResult)
        {
            using (var sw = new StringWriter())
            {
                controllerContext.EnsureViewObjectDataOnResult(viewResult);

                var viewContext = new ViewContext(controllerContext, viewResult.View, viewResult.ViewData, viewResult.TempData, sw);
                viewResult.View.Render(viewContext, sw);
                foreach (var v in viewResult.ViewEngineCollection)
                {
                    v.ReleaseView(controllerContext, viewResult.View);
                }
                return(sw.ToString().Trim());
            }
        }