|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。起首要提到一个工具:Response.Filter,它能够为你服务甚么?
filter可让你截取到最初的html输入,假如你的程序必要在输入之前,做一些处置,用这个对照便利。
第二个成绩,在那里,怎样利用Response.Filter
这里利用上全局的Global.asax处置,在Global.asax的Application_BeginRequest事务里截取html
事务代码庞大?实在就一行:
protectedvoidApplication_BeginRequest(objectsender,EventArgse)
{
HttpContext.Current.Response.Filter=newHttpResponseFilter(HttpContext.Current.Response.Filter,newReplaceTextList());
}
代码中的HttpResponseFilter类是甚么?
说功效:这类次要完成的功效是,代替默许的Filter,然后换成自界说的Filter,便利处置本人要处置的事变。
哪来的:因为Response.Filter是一个Stream类,以是新类HttpResponseFilter必要承继自Stream,然后复写Write办法,完成自界说办法便可。
复写代码示例:
publicoverridevoidWrite(byte[]buffer,intoffset,intcount)
{
//读出写的笔墨
byte[]data=newbyte[count];
Buffer.BlockCopy(buffer,offset,data,0,count);
stringinputText=Encoding.UTF8.GetString(data);
//入手下手交换
if(replaceTextList!=null&&replaceTextList.Count>0)
{
foreach(KeyValuePair<string,string>valuesinreplaceTextList)
{
inputText=Regex.Replace(inputText,values.Key,values.Value,RegexOptions.Singleline);
}
replaceTextList.Clear();
}
replaceTextList=null;
//将交换后的写进response
byte[]newdata=Encoding.UTF8.GetBytes(inputText);
filterStream.Write(newdata,0,newdata.Length);
}
代码解读:
分三步走:
1:读取原文本内容
2:然后交换修正成本人的内容
3:写归去输入
注重事项:要注重网站编码是UTF8仍是GB2312
重点是:我扩大了交换那一块,我用了一个Dictionary<string,string>
然后轮回交换,固然撑持正则,以是交换的原始笔墨和交换后的笔墨就对应上两个string上了
详细扩大使用见下篇文章。
扩大的小申明:
为了可扩大与便利年夜伙,我界说了一个笼统类,先完成了三个正则用于截取题目,申明,和关头字,详细使用仍是见下文。
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。 |
|