【发布时间】:2010-09-25 21:41:32
【问题描述】:
我正在使用 ASP.NET ajax 从页面中动态添加/删除控件,而不使用完整的回发。用户界面非常复杂。在某些情况下,当页面上的控件导致完全回发时,通过异步回发更改控件后,我收到此错误:
我可以通过在页面级别设置 EnableEventValidation="false" 来修复它。
这样做有什么影响?有时可以这样做还是这是一种黑客行为?
【问题讨论】:
标签: asp.net asp.net-ajax
我正在使用 ASP.NET ajax 从页面中动态添加/删除控件,而不使用完整的回发。用户界面非常复杂。在某些情况下,当页面上的控件导致完全回发时,通过异步回发更改控件后,我收到此错误:
我可以通过在页面级别设置 EnableEventValidation="false" 来修复它。
这样做有什么影响?有时可以这样做还是这是一种黑客行为?
【问题讨论】:
标签: asp.net asp.net-ajax
它在他们的数据库教程中特别指出,目前您必须禁用 EventValidation。这是一个错误。 http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Walkthrough/CCDWithDB.aspx
【讨论】:
如果您有一个所见即所得的输入文本框或一个需要 HTML 的文本框,那么您必须禁用验证或执行一些 JavaScript hack。
问题是您需要提供彻底的验证以防止 XSS 等。
【讨论】:
我肯定会说这是一个 hack。
就降低代码复杂性而言,您是否尝试过从某些控件继承并将大量代码放在它们后面?这听起来绝对像是重构的案例!
【讨论】:
它可能无法直接回答您的问题,或者看起来相关...
但是,如果您的 UI 非常复杂,则可能存在问题。出于显而易见的原因,关注 KISS 是一个好主意。
如果您的 UI 很复杂,那么您很可能不了解它,因此您会遇到更多问题,其中很多问题您可能永远不会注意到。您的问题和错误不容易追踪或找出,并且很可能会被掩盖并从问题的实际原因中删除。
其次,如果它对您来说很复杂,并且您编写了它,那么任何使用它的人都可能无法理解。即使您只是想管理代码,复杂性也可能反映在演示文稿中。
我建议您重新设计 UI,使其不那么复杂。无论如何,如果您再次查看它总是会更好,通常直到第三次或第四次尝试解决问题时才会有好的解决方案。
【讨论】: