在ASP.NETMVC2中拦截HTTP
有人知道我如何截取页面的HTML并阻止它被呈现回客户端吗 我在控制器方法中尝试了以下操作:在ASP.NETMVC2中拦截HTTP,asp.net,asp.net-mvc-2,Asp.net,Asp.net Mvc 2,有人知道我如何截取页面的HTML并阻止它被呈现回客户端吗 我在控制器方法中尝试了以下操作: var writer = new StringWriter(); var response = new HttpResponse(writer); var context = new HttpContext(existingContext.Request, response) { User = existingContext.User }; System.Web.HttpConte
var writer = new StringWriter();
var response = new HttpResponse(writer);
var context = new HttpContext(existingContext.Request, response) { User = existingContext.User };
System.Web.HttpContext.Current = context;
//The method controller method returning an ActionResult for the page I want to render
var ViewResult = ControllerMethod();
ViewResult.ExecuteResult(this.ControllerContext);
string html = writer.ToString();
我认为在这一点上,html字符串应该具有本应呈现的页面的html。目前,html变量是一个空字符串。我怀疑这是因为设置System.Web.HttpContext.Current不会影响控制器的HTTP上下文。这是一个可能的原因吗?如果是的话,如果属性是只读的,是否有一种经过批准的设置上下文的方法
我试图通过捕获正在创建的原始HTML并将其传递给第三方组件来将页面呈现为PDF。包含上述代码的控制器操作将获取原始HTML并将其转换为PDF,然后返回该文件。使用以下命令将视图呈现为字符串,然后可以将该字符串传递给PDF生成器
string RenderViewToString(string viewName, object model, string masterName)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, masterName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}