获取asp.net mvc view渲染后的页面字符串

来源:互联网 发布:鹰眼 数据 编辑:程序博客网 时间:2024/05/17 22:41

查看源码可以替换Response.Output来获取asp.net mvc view渲染后的页面字符串,如下:

using System;using System.Globalization;using System.IO;using System.Web;using System.Web.Mvc;namespace xxxx{public static class WebMvcHelper{public static string Render(this Controller controller, string viewName, object model = null, bool partial = false){return Render(controller.ControllerContext, viewName, model, partial);}public static string Render(this Controller controller, ViewResultBase viewResult){return Render(controller.ControllerContext, viewResult);}public static string Render(this ControllerContext context, string viewName, object model = null, bool partial = false){if (context == null) throw new ArgumentNullException("context");var controller = context.Controller;if (model != null) controller.ViewData.Model = model;ViewResultBase viewResult;if (partial) viewResult = new PartialViewResult();else viewResult = new ViewResult { MasterName = null };viewResult.ViewData = controller.ViewData;viewResult.TempData = controller.TempData;viewResult.ViewName = viewName;return Render(context, viewResult);}public static string Render(this ControllerContext context, ViewResultBase viewResult){if (context == null) throw new ArgumentNullException("context");if (string.IsNullOrEmpty(viewResult.ViewName)) viewResult.ViewName = context.RouteData.GetRequiredString("action");ViewEngineResult viewEngineResult = null;if (viewResult.View == null){viewEngineResult = (viewResult is PartialViewResult) ?           ViewEngines.Engines.FindPartialView(context, viewResult.ViewName) :           ViewEngines.Engines.FindView(context, viewResult.ViewName, (viewResult as ViewResult).MasterName);viewResult.View = viewEngineResult.View;}try{var output = new StringWriter(CultureInfo.InvariantCulture);var viewContext = new ViewContext(context, viewResult.View, viewResult.ViewData, viewResult.TempData, output);viewResult.View.Render(viewContext, output);return output.ToString();}finally{if (viewEngineResult != null) viewEngineResult.ViewEngine.ReleaseView(context, viewResult.View);}}}}


原创粉丝点击