在aspx页面不输出input type=hidden name="__VIEWSTATE"

这是一个朋友的想法,刚开始我第一感觉是截留HtmlTextWriter的RenderBeforeTag事件
不过发现Input Type="Hidden"都不影应这个事件,郁闷
Reflector查看RegisterHiddenField发现它们都存在于一个私有成员中
最后没办法,只有使用页面过滤器了
因为是一个简单的示例,所以两个类文件写在一起了,编译后生成的dll文件名为Blackant.Controls.dll

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Web;
using  System.Web.Security;
using  System.Xml;
using  System.Text.RegularExpressions;
using  System.IO;


namespace  Blackant.Controls
{
   
    
/// <summary>
    
/// Summary description for HiddenInputFilter
    
/// </summary>

    public class HiddenInputHttpModule : IHttpModule
    
{

     

        
IHttpModule Members

        
事件

        
IRawPath Members
    }



 

    
public class HiddenInputFilter : Stream
    
{
        
私有成员

        
构造
        
重写的方法
    
    }


}

然后在web项目中引用这个dll
修改web.config,加入以下内容于System.Web配置节
     < httpModules >
      
< add  name ="HiddenInputFilter"  type ="Blackant.Controls.HiddenInputHttpModule,Blackant.Controls" />
    
</ httpModules >

其实核心内容很简单
HiddenInputHttpModule中如下指示使用页面过滤器
 HiddenInputFilter filter = new HiddenInputFilter(response.Filter);
response.Filter = filter;
 HiddenInputFilter 中则
string finalHtml = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count);
            //找到<input type="hidden" name="__VIEWSTATE"
            string pattern=@"/<input type=""hidden"" name=""__VIEWSTATE""[^/>]*/>";
            finalHtml=Regex.Replace(finalHtml, pattern, string.Empty, RegexOptions.IgnoreCase | RegexOptions.Multiline);
替换掉<input type="hidden" name="__VIEWSTATE" ..../>标签

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值