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 脚本错误提示,只是提交的动作已经导致页面刷新了),解决办法很简单,标签的书写规范一点,嵌套匹配完整即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值