zoukankan      html  css  js  c++  java
  • 【转】DataList控件里添加Button,运行点击出现“回发或回调参数无效”的解决办法

    DataList控件里添加Button,运行点击出现“回发或回调参数无效”的解决办法
    2009-04-23 21:21

    回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

    用LinkButton就不会出现这样的情况,大多都是把EnableEventValidation="false",但设置成false会让Button无反应,而且还没有局部的EventValidation,所以把EnableEventValidation设置成false不是首选解决办法。

    异常的出现都是“出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件”这句话所描述的原因,所以我觉得,只要给这些“不明”的Button给予“身份”,大概就能解决这个问题了

    举个例子吧,有如下一个DataList

    <asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound"
                     OnItemCommand
    ="DataList1_ItemCommand">
                    
    <ItemTemplate>
                        
    <asp:Button ID="Button1" runat="server" Text='<%# Eval("CompanyName") %>' OnClick="Button1_Click" CommandName="test" />
                    
    </ItemTemplate>
    </asp:DataList>

    通过在Datalist对数据进行DataBind的时期对各Item的Button控件进行PostBackOptions的设置(就是给予这些Button“身份”),例子如下:

    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
         {
            
    if (e.Item.ItemType == ListItemType.Item ||
                  e.Item.ItemType
    == ListItemType.AlternatingItem)
             {
                 PostBackOptions pbo
    = new PostBackOptions(e.Item.FindControl("Button1"));
                 pbo.ActionUrl
    = "dl.aspx?page="+e.Item.ItemIndex.ToString();  // 回发的目标 URL
                 pbo.PerformValidation = true;  // 指示在回发事件发生之前是否需要在客户端进行验证
                 pbo.AutoPostBack = false;
                 pbo.RequiresJavaScriptProtocol
    = true;  // 指示是否为客户端脚本生成了 javascript: 前缀
                 ((Button)e.Item.FindControl("Button1")).PostBackUrl = Page.ClientScript.GetPostBackEventReference(pbo);   //给予Button“身份”
             }
         }
    用上面的方法都不影响Button的Click事件和DataList的ItemCommand事件。
  • 相关阅读:
    【分享】浅析Quora的技术架构 狼人:
    【观点】在苹果公司学到的编程技巧 狼人:
    【观点】工作效率上的错觉 狼人:
    提高编程技巧的十大方法 狼人:
    微软推出IE10第二个平台预览版 狼人:
    读取文件将 Excel 文件 转换成 CSV 文件 解决方案
    组合生成组合的生成之生成下一个组合 By ACReaper
    二叉树遍历二叉树的实现及先序、中序、后序遍历
    图片切换[置顶] 送大家几款可以运用到实际项目的flash+xml控件
    动画效果程序员的最高境界就是能够参加全球DEMO大赛
  • 原文地址:https://www.cnblogs.com/cappuccino/p/1718270.html
Copyright © 2011-2022 走看看