国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET的一個bug的發現和解決

2024-07-10 13:09:12
字體:
來源:轉載
供稿:網友

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也一直出怪事。剛才把下午不能運行的幾個問題在家模擬了一下竟然運行良好!!明天又要頭痛了



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿合奇县| 咸阳市| 罗田县| 手机| 巩留县| 泾源县| 高雄市| 锡林浩特市| 定远县| 绥滨县| 沭阳县| 仁寿县| 怀安县| 富蕴县| 马边| 临城县| 浙江省| 修水县| 东山县| 鹰潭市| 西青区| 定兴县| 盐边县| 石首市| 大同市| 江口县| 肥城市| 任丘市| 江西省| 合川市| 忻州市| 富锦市| 平果县| 和顺县| 磐石市| 海林市| 哈密市| 万安县| 皮山县| 奉化市| 永福县|