日期:2014-05-17  浏览次数:20356 次

使用repeater开发出现 回发或回调参数无效 出错
使用repeater模板开发时 添加一个按钮 点击按钮Button实现 删除功能时就出现 下问题:
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证
在 repeater 外面点击一个按钮 不会出现此问题 。这是什么原因啊?
各位高手帮帮小弟吧。 
 
 

------最佳解决方案--------------------
<%@ Page EnableEventValidation="true" %>
把这个改为false吧
应该是repeater里面的数据被拦截了
------其他解决方案--------------------
引用:
<%@ Page EnableEventValidation="true" %>
把这个改为false吧
应该是repeater里面的数据被拦截了


很多时候都是 验证机制在作祟.. 
------其他解决方案--------------------
 - -  都已经有提示了
------其他解决方案--------------------
引用:
<%@ Page EnableEventValidation="true" %>
把这个改为false吧
应该是repeater里面的数据被拦截了

回调无效的话一般就是按钮里面的那个是否验证设置为真,或者页面的头条的那里设置是否验证。
------其他解决方案--------------------
不知道你怎么设置这个Button,看起来你写了不少代码。我一向认为最好的软件设计就是少写代码。但是如果你喜欢写代码,提问时就把代码贴出来吧,不然没法才,因为自己写的代码总是不如使用现成的控件的写法正规。
------其他解决方案--------------------
其他设置问题,EnableEventValidation="false" 
protected void Button1_Click(object sender, EventArgs e)
        {
            RepeaterItem item  =(RepeaterItem) ((Button)sender).Parent;
           
        }

------其他解决方案--------------------
通常,这不是你的aspx设计代码造成的,而是脚本代码javascript修改了你的repeater中数据行的postback相关的参数。asp.net无法区分你的代码和流氓软件的区别,它们都是去在浏览器端修改postback语句的参数,因此就会触发enableEventValidation验证错误。所以仅看到你正规的设计代码,是解决不了问题的。

不过我建议即使如此不要放松enableEventValidation限制(不要把它设置为false),要找出真正的问题,正常地编写程序。
------其他解决方案--------------------
再检查一下你的代码还有没有什么地方操纵了 bt_delete,特别是有没有javascript干这个事!
------其他解决方案--------------------
button 按钮在repeater外边 点击的时候 就不会出现此问题 为什么啊?
在repeater里面时就出现问题,这是什么原因啊

------其他解决方案--------------------
部分代码:
<asp:Panel ID="Panel2" runat="server">
            <div class="repeter"><asp:Repeater ID="RepMesage" runat="server" 
                    onitemdatabound="RepMesage_ItemDataBound">
            <HeaderTemplate>
           <ul > 
           <li style=" height:30px;"><div class="titlediv">发件人</div></li> 
           <li style=" width:220px; height:30px;"><div class="titlediv">内容</div></li>