【问题标题】:When is it ok to disable event validation on a page?什么时候可以在页面上禁用事件验证?
【发布时间】:2010-09-25 21:41:32
【问题描述】:

我正在使用 ASP.NET ajax 从页面中动态添加/删除控件,而不使用完整的回发。用户界面非常复杂。在某些情况下,当页面上的控件导致完全回发时,通过异步回发更改控件后,我收到此错误:

Invalid postback or callback argument. Event validation is enabled using '<pages enableEventValidation="true"/>'

我可以通过在页面级别设置 EnableEventValidation="false" 来修复它。

这样做有什么影响?有时可以这样做还是这是一种黑客行为?

【问题讨论】:

    标签: asp.net asp.net-ajax


    【解决方案1】:

    它在他们的数据库教程中特别指出,目前您必须禁用 EventValidation。这是一个错误。 http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Walkthrough/CCDWithDB.aspx

    【讨论】:

      【解决方案2】:

      如果您有一个所见即所得的输入文本框或一个需要 HTML 的文本框,那么您必须禁用验证或执行一些 JavaScript hack。

      问题是您需要提供彻底的验证以防止 XSS 等。

      【讨论】:

        【解决方案3】:

        我肯定会说这是一个 hack。

        就降低代码复杂性而言,您是否尝试过从某些控件继承并将大量代码放在它们后面?这听起来绝对像是重构的案例!

        【讨论】:

          【解决方案4】:

          它可能无法直接回答您的问题,或者看起来相关...

          但是,如果您的 UI 非常复杂,则可能存在问题。出于显而易见的原因,关注 KISS 是一个好主意。

          如果您的 UI 很复杂,那么您很可能不了解它,因此您会遇到更多问题,其中很多问题您可能永远不会注意到。您的问题和错误不容易追踪或找出,并且很可能会被掩盖并从问题的实际原因中删除。

          其次,如果它对您来说很复杂,并且您编写了它,那么任何使用它的人都可能无法理解。即使您只是想管理代码,复杂性也可能反映在演示文稿中。

          我建议您重新设计 UI,使其不那么复杂。无论如何,如果您再次查看它总是会更好,通常直到第三次或第四次尝试解决问题时才会有好的解决方案。

          【讨论】:

          • 这篇文章有一种与生俱来的傲慢。业务问题很可能需要一个复杂的 UI,而不是为了一般的易用性,所以不用讲课,只解决提出的问题。
          • @BobJones:本意不是傲慢,重读后,我觉得不是这样。我正在提出普遍接受的设计要点,并试图以一种有用的方式这样做。虽然可能一个非常复杂的设计是不可避免的,但我遇到的绝大多数只是没有任何真正想法的“设计”。此外,我的印象是,SO 与简单地回答 OP 可能提出的赤裸裸的问题一样,都是为了指导人们。并以一种避免粗鲁的方式来做这件事,你的评论肯定是这样。
          猜你喜欢
          • 2020-05-21
          • 2020-07-05
          • 2023-03-19
          • 2011-02-24
          • 2011-02-19
          • 2012-09-25
          • 1970-01-01
          • 2012-09-27
          • 1970-01-01
          相关资源
          最近更新 更多