LinkButton无法在生产服务器上触发
这是"在我的机器上运行认证计划"的不错的选择。
我为LinkButton使用以下代码...
<cc1:PopupDialog ID="pdFamilyPrompt" runat="server" CloseLink="false" Display="true"> <p>Do you wish to upgrade?</p> <asp:HyperLink ID="hlYes" runat="server" Text="Yes" CssClass="button"></asp:HyperLink> <asp:LinkButton ID="lnkbtnNo" runat="server" Text="No" CssClass="button"></asp:LinkButton> </cc1:PopupDialog>
它使用一个自定义控件,该控件仅在内容前后添加代码以将其格式化为弹出对话框。是按钮是HyperLink,因为它执行javascript来隐藏对话框并显示另一个对话框。 "否"按钮是LinkButton,因为它需要回发才能处理此值。
我没有在LinkButton上注册onClick事件,因为我只是检查IsPostBack是否为true。当在本地执行时,PostBack可以正常工作,并且一切顺利。发布到我们的开发服务器后,单击"否"按钮不会执行任何操作。在本地测试与在开发服务器上测试时,我正在使用相同的浏览器。
我最初的想法是,也许验证器阻止了PostBack的触发。我在页面的另一部分上确实使用了两个验证器,但是它们都分配给了一个特定的验证组,没有将No LinkButton分配给该验证组。但是,问题在于为什么它不能在开发服务器上本地运行。
有任何想法吗?
解决方案
检查在生产环境中发出的html,并确保它具有__doPostback(),并且没有全局方法监视单击并取消事件。除此之外,如果我们认为它可能与验证有关,则可以尝试添加CausesValidation或者其他任何为false的东西,看看是否有帮助。否则,在不显示和不了解DEV vs PROD的配置的情况下,很难调试"在我的机器上工作"错误。
我对ValidationGroup的理解是,未指定任何组的按钮将触发页面上的所有验证器。我们是否尝试过给LinkButton一个不同的ValidationGroup?
我有一个类似的问题。我用updatePanel创建了一个表单,该表单中有一些链接按钮可以打开modalpopup Ajax扩展器。在我向该站点添加身份验证之前,它们工作正常。之后,他们什么也没做。
阅读解决方案后,我发现某些链接按钮正在起作用,它们是对CausesValidation进行了显式设置的按钮(我只将其设置为可以实现的按钮)。在我通过身份验证后,将CausesValidation =" false"添加到所有其他链接按钮可以使它们正常工作。
谢谢大家的评论,它挽救了我的生命!