我已经更新了我的.Net Web应用程序以使用Framework 4.5,更新后,所有输入按钮(不是asp:Buttons)都停止触发onclick javascript代码,这只发生在里面的那些按钮上用户控件(.ascx)。
仅为了记录,用户控件既不会被动态加载,也不会被更新面板加载。
我的按钮看起来像这样
<input id="cb" onClick="myfunc()" type="button" value="Close" />
我的用户控件包含在页面中,如下所示
<cc:actionbar id="theActionBar" runat="server"></cc:actionbar>
和javascript函数(也包含在用户控件中)是
function myfunc() {
if (confirm("Before closing, please make sure you saved any changes.\nAre you sure you want to close?") == true) {
__doPostBack('theActionBar:theClose', '');
}
}
这在Framework 3.5和以前的版本上运行得很好。
任何想法为什么会发生这种情况?或者我该如何解决?我已经尝试了一些我在互联网上找到的建议,似乎没什么用。
提前致谢。
答案 0 :(得分:0)
我无法看到一个明显的原因,但您是否考虑过简化您的方法以避免自定义javascript和硬编码的回发事件参考?您可以使用ASP.NET按钮的OnClientClick
属性获得完全相同的行为:
<asp:Button runat="server" ID="btnClose" Text="Close" OnClick="btnClose_Click" OnClientClick="return confirm('Before closing, please make sure you saved any changes.\nAre you sure you want to close?')" />
从OnClientClick代码或函数返回false
会阻止回发。
切换到这种方法可能更合适,甚至可以解决您的问题,如果它与回发事件参考有关。