Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Page.ClientScript.RegisterForEventValidation的正确用法_C#_Asp.net - Fatal编程技术网

C# Page.ClientScript.RegisterForEventValidation的正确用法

C# Page.ClientScript.RegisterForEventValidation的正确用法,c#,asp.net,C#,Asp.net,我在usercontrol中有以下方法 protected override void Render(HtmlTextWriter writer) { base.Render(writer); Page.ClientScript.RegisterForEventValidation(DataList1.UniqueID); if (DataList1.Items.Count > 0) {

我在usercontrol中有以下方法

    protected override void Render(HtmlTextWriter writer)
    {
        base.Render(writer);

        Page.ClientScript.RegisterForEventValidation(DataList1.UniqueID);
        if (DataList1.Items.Count > 0)
        {
            foreach (DataListItem item in DataList1.Items)
            {
                Page.ClientScript.RegisterForEventValidation(item.UniqueID);
                foreach (Control ctrl in item.Controls)
                {
                    if (ctrl is Button)
                    {
                        Button btn = ctrl as Button;
                        Page.ClientScript.RegisterForEventValidation(btn.UniqueID, btn.CommandArgument);
                    }
                }
            }
        }
    }
我试图让页面停止给我无效的回发或回调参数。当使用Datalist中的databound命令参数单击“选择”按钮时,在配置中或在页面错误中启用事件验证。我已尝试注册submit控件的事件验证,但无法使其正常工作


有人用这种方法成功了吗?我真的不想禁用页面的事件验证。

发现问题根本与事件验证无关,通常错误消息会一如既往地有用

删除页面回发事件上的数据绑定对我来说就是这样

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            //do datbinding
        }
    }

通常,当您在aspx文件中放置验证器时,您会告诉验证器它与哪个控件(例如textbox)关联。但假设您有一个CustomValidator,它可以检查您是否在移动电话的任一家庭电话中输入了电话号码

此验证器未与特定文本字段关联。因此,不要在CustomValidator上设置ControlToValidate属性,而是将其保留为空,然后在两个控件上调用RegisterForEventValidation

因此,函数只是告诉框架一个特定控件包含应该验证的数据。框架使用它来设置javascript事件,以便在运行时填写或清除控件时运行客户端验证

因此,您不应该注册用于事件验证的按钮,这毫无意义。如果您已经有一个验证程序,ControlToValidate指向该文本框,那么也没有理由为事件验证注册一个文本字段

您遇到的问题可能更多地与将按钮与特定验证组关联有关,或者是否在按钮上设置了原因验证。 还请记住,还应检查回发事件处理程序中的验证

Page.Validate();
if (!Page.IsValid) return;


事件验证与输入值验证无关,这正是您所讨论的。引用,当Page.EnableEventValidation属性设置为true时,ASP.NET将验证控件事件是否源自该控件呈现的用户界面。控件在呈现期间注册其事件,然后在回发或回调处理期间验证事件。
Page.Validate("ValidationGroup");
if (!Page.IsValue("validationGroup")) return;