`
touchinsert
  • 浏览: 1288184 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ASP.NET Postback回调后参数无效

 
阅读更多

描述

ASP.net 添加了"event validation"的功能, ASP.NET会检查 POST方法中的所带的参数,如果认为不合法,就会抛出异常,信息如下:


这个设计的目的是为了防止恶意用户利用post 方法发送一些恶意数据.但是有时一些常见的case也会出错,比如使用客户端脚本,根据页面上的其他控件的内容来改变一个dropdown list的内容,最常见的case就是省市县3级联动菜单.又比如在页面上添加一个dropdown list,然后给它添加3个item,再使用客户端脚本在dropdown list中添加一个item,如果dropdown list的AutoPostBack="True",每次选择list item都会引起postback, 如果所选的item为dropdown list本来就有的,一切正常.如果所选的item是通过客户端脚本添加的,就会出现异常.在asp.net render DropDownList 时,会遍历DropDownList的item,并记录所有可能的postback的值,其算法为
hash(DropDownList’s UniqueID XOR hash(ListItem’s Value property)),计算的结果会被保存在page中,


这个过程发生在control的Render()方法中当页面postback时,ASP.NET会根据这个隐藏值检查postback values,如果找不到对应信息,就会报错

解决方法

1. 禁止这个功能, 但同时会失去一些安全保障:


2. Register For Event Validation,其原理就是让asp.net记录这个postback value.RegisterForEventValidation必须在render时调用:

如果我们自己写了一个control,需要使用validate events功能,就需要使用SupportsEventValidation attribute,


3. Form嵌套,一个页面只能有一个Form,仔细检查代码。

分享到:
评论

相关推荐

    浅谈ASP.NET的Postback 实例代码第1/2页

    我们现在来看看ASP.NET整个Postback程序处理的过程。 首先我们通过一个Sample来看ASP.NET如何处理一个通过Click一个Button引起的Postback。下面是Web Page的HTML: 代码如下: <%@ Page Language=”C#” ...

    ASP.NET webforms数据库操作基础例程(POSTBACK)

    例程基于ASP.NET webforms框架,采用POSTBACK技术,展现了对数据库相关的各项操作与内容展示,并实现了分页显示。相关数据库请下载本人资源《中国省级区域概况-ASP.NET例程数据库(SQL2008R2)》...

    asp.net知识库

    Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0...

    微軟MVP的ASP.NET 4.5專題實務I

     一個範例學通 PostBack觀念,瞬間領悟ASP.NET精髓!  深入剖析GridView範例,寫程式徹底控制GridView、ListView。 。  七個範例學會 RowDataBound事件,打造您專屬的GridView畫面與功能。  最精華的ADO.NET理論...

    ASP.Net皮肤换肤控件

    修正了7.1版中设置SubmitButtonImageUrl属性后,Postback回发分页方式情况下点击数字页索引按钮不引发分页事件的bug; 修正了使用Url分页时,如果页面上没有服务器端form控件时无法注册客户端脚本的bug,从7.2版起...

    asp.net技术内幕(1)

    第一部分 使用ASP.NET Web表单 <br>第1章 建立ASP.NET页面 <br>1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    4.5.3 使用带参数的回调功能 110 4.6 小结 113 第5章 ASP.NET Web服务器控件 115 5.1 Web服务器控件概述 115 5.2 Label服务器控件 116 5.3 Literal服务器控件 118 5.4 TextBox服务器控件 119 5.4.1 使用Focus...

    ASP.NET的网页代码模型及生命周期

    创建ASP.NET网站,首先需要创建网站,单击【文件】按钮,在下拉菜单中选择【新建网站】选项,单击后会弹出对话框用于ASP.NET网站的创建,如图4-1所示。 图4-1 新建ASP.NET网站 在【位置】选项中,旁边的【下拉菜单...

    asp.net(c#)网页跳转七种方法小结

    ①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到... ASP.NET] 代码如下: using System; using System.Web.UI

    asp.net动态创建控件实现多文件上传

    asp.net中的FileUpload控件一次只能实现上传一个文件,若要上传多个文件的话必须使用多个FileUpload控件,但一次上传多少个文件有时不确定,所以就想到了动态创建控件。此处是用下拉列表控件的postback控制的,要想...

    asp.net一夜速成18

    Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security ...

    ASP.net技术内幕

    内容包括:ASP.NET Web表单的使用,高级ASP.NET页面的开发,ADO.NET的使用,ASP.NET应用程序的使用, ASP.NET应用程序的保护,ASP.NET Web服务的建立,.NET框架的利用,自定义的ASP.NET控件的建立,ASP.NET的应用...

    asp.net页面提交

    c#语音编写的表单提交,及页面的postback文题!

    asp.net 禁止F5和后退

    执行过postback操作的web页面在刷新的时候,浏览器会有“不重新发送信息,则无法刷新网页”的提示,若刚刚执行的恰好是往数据库插入一条新记录的操作,点[重试]的结果是插入了两条重复的记录,以前一直是用保存数据...

    GridView(For Asp.net C# vs2005)控件

    最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用...

    ASP.NET2.0高级编程(第4版)1/6

    4.5.3 使用带参数的回调功能110 4.6 小结113 第5章 ASP.NET Web服务器控件115 5.1 Web服务器控件概述115 5.2 Label服务器控件116 5.3 Literal服务器控件118 5.4 TextBox服务器控件119 5.4.1 使用Focus()方法120 ...

    asp.net技术内幕(5)

    第一部分 使用ASP.NET Web表单 <br>第1章 建立ASP.NET页面 <br>1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    asp.net技术内幕(4)

    第一部分 使用ASP.NET Web表单 <br>第1章 建立ASP.NET页面 <br>1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    asp.net技术内幕(3)

    第一部分 使用ASP.NET Web表单 <br>第1章 建立ASP.NET页面 <br>1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

Global site tag (gtag.js) - Google Analytics