我正在为网站开发一个评论系统,并且在每个回发页面上为数据库中与该页面相关的每条评论生成一个用户控件(称为 ucComment)。每个 ucComment 都有一个响应按钮,允许您响应每个单独的评论。
当我终于意识到每次创建新评论时,下一次回发都会抵消所有页面的控件 ID,但我遇到了响应按钮不执行任何操作的问题。换句话说,当我单击 ctl00_Content_ctl00_ctl01_ctl0 7 _lbtnRespond 时,该控件实际上将在下一次回发时生成为 ctl00_Content_ctl00_ctl01_ctl0 8 _lbtnRespond。所以与 ctl07 相关的事件根本不会发生。
在网上闲逛时,我读到了关于覆盖 ClientID 的信息。我想如果我能以我想要的方式命名控件,我就可以绕过我的问题。 http://west-wind.com/Weblog/posts/4605.aspx 它看起来像一个很棒的 hack,但它不会触发事件,因为页面上生成的 ID 与控件中的 ID 表示方式之间存在差异树。
甚至还有一个人从 MasterPage 派生来改变控制树的工作方式,以使上述 hack 用于回发:http: //www.netquarry.com/index.php/2009/03/master-pages-ajax -and-javascript-10292/ 但我担心可能会产生不可估量的影响。
我应该怎么做才能让我的评论系统正常工作,以便我可以响应特定评论并让响应事件仍然触发,即使控件在该回发上被重命名?