广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    asp.net的一个bug的发现和解决

    2018-04-05 08:32:50 次阅读 稿源:互联网
    广告

      gridview中的按钮类型用如果用image,触发rowcommand事件时会被执行两次,据说只出现在IE6,IE5、firefox等没有问题,我的IE7也存在同样问题,似乎和IIS版本也有关系,期待微软的补丁。
         今天下午一遇到一个问题,gridview 的rowcommand事件会被执行两次,postback也会执行两次,最初还怀疑是调试器的问题,经过察看日志,确定真的被执行了两次。
         代码检查了n遍,逐句排除,仍没有找到问题,已经开始怀疑是鼠标了,抓包发现确实是发了两次请求,并且第一次请求没有被处理。偶尔一次把buttontype从image换到button,意外的好了,只被执行了一次,看来问题只出在Imagebutton。
         通过google搜索发现有不少人遇到了此问题,确定是asp.net的bug。点击按钮会向iis发两次请求,第一次比第二次少八个字节,导致第一次请求不成功,接着会重新发一次,因此最容易想到的就是忽略第一次请求,下面的第一种解决方式就是如此。
         目前有两个解决方案,都不完善,第一个是在rowcommand事件中加入下面的语句:
      if (Request["x"] == null && Request["y"] == null)
                  Response.End();
      通过这条语句,判断图片的坐标,如果其坐标是null,则是第一次请求,因为第一次请求无效,结束他。
         第二个是微软推荐的:尽量不在gridview里面用imagebutton,而用link或者button,如果必须用可以用类似的代码:
      <asp:GridView ID="GridView1" runat="server">
      <Columns>
      <asp:TemplateField>
      <ItemTemplate>
      <asp:ImageButton runat=server id="ImageButton1" CommandName="Delete"
      ImageUrl="" commandargument='<%# DataBinder.Eval(Container,
      "RowIndex") %>' OnCommand="ImageButton1_Command" />
      </ItemTemplate>
      </asp:TemplateField>
      </Columns>
      </asp:GridView>

      protected void ImageButton1_Command(object sender, CommandEventArgs e) {
      GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()));
      }
      把imagebuttong加入到TemplateField中,并且在事件中调用deleterow。
         不知道还有没有更好的解决方案,下面的论坛详细的讨论了这个问题:
      http://www.developersdex.com/asp/message.asp?p=1116&r=4641456&page=2第一页讨论的结果是:只有在button的类型是image的情况下才会有此问题,可以略过不看,后面两页有详细的讨论和解决方式。
         今天一天一直在遇到奇怪问题,头大了,相同的代码经常一会可以执行,一会儿不可以,vs2005也一直出怪事。刚才把下午不能运行的几个问题在家模拟了一下竟然运行良好!!明天又要头痛了
      http://www.cnblogs.com/bluewater/archive/2006/11/21/567871.html

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告