本文主要是介绍ASP.Net WebForm 服务器事件失效的一种情形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么问题最难解决呢?没有反馈或得不到任何有效反馈的问题。
失效时的表现
一个简单的登录页面,登录按钮,OnClick="LoginClick"
,大部分用户访问正常。
一部分:360浏览器极速模式下页面提交,一闪停留在原页面,没有触发服务器事件方法。兼容模式下正常。
一部分:360浏览器极速模式与兼容模式都一闪而过。
一部分:UC浏览器,极速模式与兼容模式都一闪而过。
一些浏览器在不同的用户那有不同的表现,这或许与浏览器自身的版本有关。
分析
这种没有明确反馈信息的问题很不好定位。
在本地使用UC浏览器调试,只能确定它在出现一闪而过时的确没有执行服务器方法,就好像这个按钮没有设置 OnClick
一样。
关键还不是所有页面都这样,百思不得其解,在压力之下不得不先在 PageLoad
中使用 if(IsPostback)
来临时让其流转下去(该方法也可行,一闪现象出现时并未见代码异常)。
既然不是所有页面都这样,基本能说明问题还是出在该页面本身。仔细查阅,在编辑器中有警告标记着一个外围的 div
没有结束标记,大致样子如下:
<form>
<div style="text-align:center">
<asp:Button ID="Login" runat="server" OnClick="LoginClick" />
</form>
难道这就是问题所在,似乎也暂时也发现不了别的原因。加上</div>
,果然正常了。
<form>
<div style="text-align:center">
<asp:Button ID="Login" runat="server" OnClick="LoginClick" />
</div>
</form>
结论
在更新版本的浏览器中,对标签完整性的尽力而为的实现跟以前已有所不同,ASP.Net
的事件回发方式显然在这种标签缺失情况下受到影响,(可能有 js 脚本错误提示,只是提交的动作已经导致页面刷新了),解决办法很简单,标签的书写规范一点,嵌套匹配完整即可。
这篇关于ASP.Net WebForm 服务器事件失效的一种情形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!