在使用asp.net事件验证时,如何防止半载页面的表单提交异常?

Sha*_*awn 5 asp.net eventvalidation

我有一个带有一些动态添加按钮的页面.如果在页面完全加载之前单击按钮,则会抛出经典异常:

Invalid postback or callback argument. 
Event validation is enabled using in configuration or in a page. For
Run Code Online (Sandbox Code Playgroud)

出于安全目的,此功能将验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.

我猜测尚未在表单上加载Viewstate字段,其他位正在提交.在保持事件验证的同时,防止此错误的最佳方法是什么?

Jef*_*ton 4

我在这里回答了类似的问题。去引用:

本质上,您需要在页面顶部加载 ViewState。在 .NET 3.5 SP1 中,RenderAllHiddenFieldsAtTopOfForm属性已添加到 PagesSection 配置中。

网页配置

<configuration>

    <system.web>

        <pages renderAllHiddenFieldsAtTopOfForm="true"></pages>

    </system.web>

</configuration>
Run Code Online (Sandbox Code Playgroud)

有趣的是,它的默认值是 true。因此,本质上,如果您使用 .NET 3.5 SP1,那么 ViewState 会自动呈现在表单顶部(在加载页面的其余部分之前),从而消除您遇到的 ViewState 错误。