首页 新闻 会员 周边 捐助

asp.net mvc4 获取view的html文本

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-05-20 17:13

问题如下:
我想在过滤器中截取一个Action返回View时生成的页面内容 的文本,
我在 
OnResultExecuted(ResultExecutedContext filterContext) 中获取到了
filterContext.HttpContext.Response;
但是如何获取生成的HTML内容呢,这里好像是没有获取到
示例:
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
TextWriter tw = filterContext.HttpContext.Response.Output;
//这个output和OutputStream 都不能正确获取到,求大神帮忙,这个思路是否正确,能给个解决方案。
}

修行者V5的主页 修行者V5 | 初学一级 | 园豆:172
提问于:2015-05-19 17:46
< >
分享
所有回答(3)
0

可以参考一下这个博问中的代码:http://q.cnblogs.com/q/71992/

dudu | 园豆:29732 (高人七级) | 2015-05-19 17:55

我先看看

支持(0) 反对(0) 修行者V5 | 园豆:172 (初学一级) | 2015-05-19 18:15
0
using System;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
class Program
{
  // 获取网页的HTML内容,根据网页的charset自动判断Encoding
  static string GetHtml(string url)
  {
    return GetHtml(url, null);
  }
  // 获取网页的HTML内容,指定Encoding
  static string GetHtml(string url, Encoding encoding)
  {
    byte[] buf = new WebClient().DownloadData(url);
    if (encoding != nullreturn encoding.GetString(buf);
    string html = Encoding.UTF8.GetString(buf);
    encoding = GetEncoding(html);
    if (encoding == null || encoding == Encoding.UTF8) return html;
    return encoding.GetString(buf);
  }
  // 根据网页的HTML内容提取网页的Encoding
  static Encoding GetEncoding(string html)
  {
    string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
    string charset = Regex.Match(html, pattern).Groups["charset"].Value;
    try { return Encoding.GetEncoding(charset); }
    catch (ArgumentException) { return null; }
  }
  // 根据网页的HTML内容提取网页的Title
  static string GetTitle(string html)
  {
    string pattern = @"(?si)<title(?:\s+(?:""[^""]*""|'[^']*'|[^""'>])*)?>(?<title>.*?)</title>";
    return Regex.Match(html, pattern).Groups["title"].Value.Trim();
  }
  // 打印网页的Encoding和Title
  static void PrintEncodingAndTitle(string url)
  {
    string html = GetHtml(url);
    Console.WriteLine("[{0}] [{1}]", GetEncoding(html), GetTitle(html));
  }
  // 程序入口
  static void Main()
  {
    PrintEncodingAndTitle("http://www.msdn.net/");
    PrintEncodingAndTitle("http://www.cnblogs.com/");
    PrintEncodingAndTitle("http://www.cnblogs.com/skyiv/");
    PrintEncodingAndTitle("http://www.csdn.net/");
    PrintEncodingAndTitle("http://news.163.com/");
  }
}

以上代码是我自己项目中用到的, 我稍微改了一些敏感信息直接贴给你了, 如果有问题的话就继续追问, 没问题的话就采纳吧

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-05-19 18:13

很感谢你的答案,但是我不是要提取html代码,而是mvc视图引擎渲染后在返回浏览器之前我想在代码里面先获取到这些内容。

 

是这个Render之后,放在缓冲区Buffer里面的内容

支持(0) 反对(0) 修行者V5 | 园豆:172 (初学一级) | 2015-05-19 18:19
0

自己已经解决了

修行者V5 | 园豆:172 (初学一级) | 2015-05-20 17:10

请问是怎么解决的,我也急寻这个答案

支持(0) 反对(0) 残月狼烟 | 园豆:200 (初学一级) | 2015-07-24 15:22

请写一下你的代码呗,最近遇到跟你一样的问题!你是怎么解决的?

支持(0) 反对(0) 风云super | 园豆:200 (初学一级) | 2016-02-26 17:50

@yang.liao: 这个问题,我已经解决了,谢谢!

支持(0) 反对(0) 风云super | 园豆:200 (初学一级) | 2016-03-17 15:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册