Page EventValidation is True error?

本文关键字:error True is EventValidation Page | 更新日期: 2023-09-27 18:09:05

我通过使用Jquery的输入sumbit类型(Html标签)onclick事件做了两个列表框和值交换。值很容易从一个列表框交换到另一个列表框,但是当我去存储从列表框中选择的值时,选择的值给了我。首先,我得到了错误页面Eventvalidation=true,所以我在谷歌上搜索并使用

解决这个问题
   protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
                Page.ClientScript.RegisterForEventValidation(lsttolimo.UniqueID,this.ToString());
                base.Render(writer);
    }

未找到解决方案。在使用UpdatePanel并添加触发器中的每个控件之后,但仍然没有找到解决方案

Page EventValidation is True error?

首先让我们了解一下。net中EventValidation的含义。

当您创建一些服务器控件时,应该将它们呈现为HTML,以便它们可以在浏览器中显示。现在,假设你的下拉列表中有10个项目。这10个项目将在<select>标签内呈现为<option>标签(它们被转换为HTML等效控件)。

现在,ASP。NET加密这10个值,并将它们添加到EventValidation隐藏字段。这意味着您现在已经将这10个值发送了两次到浏览器。现在,每当有人发回表单时,ASP。NET获取张贴值(这10项中的一个被张贴回来)。然后它解密这10个加密的值(现在它有10 + 1值)。它检查所提交的值是否为10项中的一项。如果是,那么ASP。NET确保一切正常。但如果不是,那么它就会明白有人试图欺骗它。

现在,假设您有一个国家列表,并且您只接受来自3个国家的用户,例如,美国、英国和澳大利亚。然而,有人来到您的注册页面,理解HTML并创建另一个具有相同字段和相同国家列表的表单。但这次他还在你的名单上加上了另一个国家的名字(比如伊朗)。

如果你没有打开EventValidation,并且你没有明确地检查国家,那么你只是被愚弄了,接受伊朗作为一个有效的国家。这被称为表单欺骗

现在,因为你有两个列表,并且你交换了它们的值,当然,. net认为它被愚弄了。我建议您关闭EventValidation(这是更简单的方法,但更容易出现安全问题)并自己检查。

要关闭事件验证,只需将此添加到web中。配置文件:

<system.web>
    <pages enableEventValidation="false"
</system.web>