Asp.net Page enableEventValidation=";“真的”;错误

Asp.net Page enableEventValidation=";“真的”;错误,asp.net,postback,Asp.net,Postback,我正在创建一个客户端插入表单,该表单中有一个命名Id用于保存选定的客户端Id,但当我尝试提交表单时,它位于页面enableEventValidation=“true”错误,当我为任何其他Id重命名此隐藏字段时,这是可行的 <asp:HiddenField runat="server" ID="Id" /> 当我设置enableEventValidation=“false”时,我的表单可以提交成功,但将来可能需要它 如何解决这个问题?保持HiddenField命名Id 打印屏幕:

我正在创建一个客户端插入表单,该表单中有一个
命名Id用于保存选定的客户端Id,但当我尝试提交表单时,它位于
页面enableEventValidation=“true”
错误,当我为任何其他Id重命名此
隐藏字段时,这是可行的

<asp:HiddenField runat="server" ID="Id" />

当我设置enableEventValidation=“false”时,我的表单可以提交成功,但将来可能需要它

如何解决这个问题?保持
HiddenField
命名
Id

打印屏幕:
你几乎已经回答了你自己的问题。唯一可行的方法是设置
enableEventValidation=“false”
或重命名
HiddenField


在这里重命名它将是最好的解决方案,出于安全原因,这可能不是您问题的解决方案,但我遇到了同样的问题,并通过在绑定数据之前检查回发来解决

  (!IsPostBack)
{
  binddata(); //this was my gridview binding function
}

如果您使用的是framework 4.0,请在web.config()中输入


如果您使用的是framework 4.5,请在web.config(requestValidationMode=“2.0”)中输入



当页面上有另一个表单不包含runat=server时,也会发生此错误。请检查母版页或当前页上是否有其他表单。

好的,但为什么我不能命名“Id”以进行控制?它是asp.net的保留字?我实际上创建了一个示例应用程序,它有一个名为Id的隐藏字段,不会引起任何问题。与此字段组合时,一定有其他原因导致此问题。
<configuration>
    <system.web>
        <pages validateRequest="false" />
    </system.web>
</configuration>
<system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" requestValidationMode="2.0"/>
</system.web>