亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用 Anthem.NET 框架的一個調試經歷

2019-11-18 17:04:34
字體:
來源:轉載
供稿:網友

簡介:Anthem 是一個很好用的 Ajax 框架,支持 asp.net 1.1, 2.0。
由于該框架的所有控件都繼承自 ASP.NET 自身的服務器控件,保留了幾乎所有這些控件的屬性和行為(除了把它們的 PostBack 改為 CallBack 的無刷新調用之外)。所以學習曲線很平緩。

今天我在使用 Anthem 的時候碰到了一個比較麻煩的調試問題,記錄于此。

在下面的代碼中,我用了一個 Anthem.Repeater 控件。
        <asp:xmlDataSource ID="XmlDataSource2" runat="server" XPath="http://NeedDocs/Doc"
        EnableCaching="false"></asp:XmlDataSource>
        <table class="mytable" width="100%" cellspacing="0" cellpadding="0">
          <anthem:Repeater ID="rptNeedDocs" runat="server" DataSourceID="XmlDataSource2"
          AutoUpdateAfterCallBack="False">
            <HeaderTemplate>
              <tr class="formTitle">
                <td>
                  選中</td>
                <td>
                  文件、圖紙名稱</td>
                <td>
                  應送</td>
                <td>
                  是否原件</td>
                <td>
                  備注</td>
              </tr>
            </HeaderTemplate>
            <ItemTemplate>
              <tr>
                <td>
                  <asp:CheckBox ID="chkDoc" runat="server" Checked="True" />
                  <asp:HiddenField ID="hidDocId" runat="server" Value='<%# XPath("@Id") %>' />
                </td>
                <td>
                  <asp:Label ID="lblDocName" runat="server" Text='<%# XPath("@Name") %>' />
                </td>
                <td>
                  <asp:TextBox ID="txtQuantity" runat="server" Text='<%# XPath("@Quantity") %>' Width="30" />
                </td>
                <td>
                  <asp:RadioButtonList ID="radiolist_IsOriginal" runat="server" SelectedValue='<%# XPath("@IsOriginal") %>'
                    RepeatDirection="Horizontal">
                    <asp:ListItem Value="True">原件</asp:ListItem>
                    <asp:ListItem Value="False">副本</asp:ListItem>
                  </asp:RadioButtonList>
                </td>
                <td>
                  <asp:TextBox ID="txtComment" runat="server" Text='<%# XPath("Comment") %>' />
                </td>
              </tr>
            </ItemTemplate>
            <FooterTemplate>
            </FooterTemplate>
          </anthem:Repeater>
        </table>
這個代碼在運行時,有時候會出現一個 JS 錯誤:“未知的運行時錯誤”。
而該錯誤只在特定情況下發生,在其他類似情況下正常。
幸虧 VS 2005 提供了非常強大的客戶端腳本調試功能。我終于將錯誤定位到了 Anthem 產生的一行代碼上:
control.innerHTML = result.controls[controlID];
查了相關資料后發現,在 IE 下,對 innerHTML 屬性賦值的時候,會對所賦的值進行檢查。如果不是 well formed, 則可能會出現“未知的運行時錯誤”。

于是我判斷 anthem.Repeater 輸出的 HTML 出了問題。從上面代碼中高亮的兩行可以看到,table 標簽在 Repeater 的外面。因此 Repeater 本身輸出的是一系列 tr, 并不是 well formed 的一個整體。
于是我將 table 的標簽頭尾分別放入 Repeater 的 HeaderTemplate 和 FooterTemplate,問題解決。
(之所以先前把 table 標簽放到外面去了,是因為放在 HeaderTemplate 和 FooterTemplate 中的時候,不知道為什么 VS 的設計器不能切換到設計視圖了。而改成這樣可以解決問題。)

修改成功后的代碼如下:
        <asp:XmlDataSource ID="XmlDataSource2" runat="server" XPath="http://NeedDocs/Doc"
        EnableCaching="false"></asp:XmlDataSource>
        <anthem:Repeater ID="rptNeedDocs" runat="server" DataSourceID="XmlDataSource2" AutoUpdateAfterCallBack="False">
          <HeaderTemplate>
            <table class="mytable" width="100%" cellspacing="0" cellpadding="0">
              <tr class="formTitle">
                <td>
                  選中</td>
                <td>
                  文件、圖紙名稱</td>
                <td>
                  應送</td>
                <td>
                  是否原件</td>
                <td>
                  備注</td>
              </tr>
          </HeaderTemplate>
          <ItemTemplate>
            <tr>
              <td>
                <asp:CheckBox ID="chkDoc" runat="server" Checked="True" />
                <asp:HiddenField ID="hidDocId" runat="server" Value='<%# XPath("@Id") %>' />
              </td>
              <td>
                <asp:Label ID="lblDocName" runat="server" Text='<%# XPath("@Name") %>' />
              </td>
              <td>
                <asp:TextBox ID="txtQuantity" runat="server" Text='<%# XPath("@Quantity") %>' Width="30" />
              </td>
              <td>
                <asp:RadioButtonList ID="radiolist_IsOriginal" runat="server" SelectedValue='<%# XPath("@IsOriginal") %>'
                  RepeatDirection="Horizontal">
                  <asp:ListItem Value="True">原件</asp:ListItem>
                  <asp:ListItem Value="False">副本</asp:ListItem>
                </asp:RadioButtonList>
              </td>
              <td>
                <asp:TextBox ID="txtComment" runat="server" Text='<%# XPath("Comment") %>' />
              </td>
            </tr>
          </ItemTemplate>
          <FooterTemplate>
            </table>
          </FooterTemplate>
        </anthem:Repeater>
經過這次的調試,我覺得 Ajax 除了帶來了界面上響應迅速的好處之外,因為引入大量 js,也增大了調試的難度,因此應用的時候還是要根據情況取舍。不能什么都上 Ajax.

http://www.49028c.com/RChen/archive/2006/08/06/anthem_debug.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品日本| 九九热这里只有精品6| 91在线视频导航| 欧美成人精品在线视频| 国产专区欧美专区| 国产精品久久久久久久久久99| 欧美视频13p| 欧美精品久久一区二区| 久久精品国产久精国产一老狼| 亚洲欧美日韩中文视频| 日韩最新在线视频| 日韩乱码在线视频| 91po在线观看91精品国产性色| 国产成人久久精品| 亚洲夜晚福利在线观看| 国内精品久久久久久影视8| 97在线观看视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲аv电影天堂网| 亚洲直播在线一区| 久久久电影免费观看完整版| 在线观看欧美成人| 国产精品海角社区在线观看| 91精品国产亚洲| 国产精品中文字幕在线观看| 91久久久久久久久久| 最新日韩中文字幕| 久久久久久久久久亚洲| 日韩在线播放一区| 日本精品性网站在线观看| 欧美电影免费观看| 一本一道久久a久久精品逆3p| 国产91精品久久久久久久| 欧美激情一区二区久久久| 91精品国产免费久久久久久| 成人在线中文字幕| 亚洲国产成人一区| 亚洲精品日韩久久久| 欧美日韩中文字幕在线视频| 亚洲黄一区二区| 色噜噜狠狠色综合网图区| 九九九久久久久久| 欧美xxxx18国产| 国产欧美在线播放| 伦伦影院午夜日韩欧美限制| 欧美肥臀大乳一区二区免费视频| 亚洲视频网站在线观看| 亚洲国产日韩欧美在线99| 91九色蝌蚪国产| 欧美最猛性xxxxx亚洲精品| 一区二区三区四区精品| 国产精品丝袜久久久久久不卡| 欧美性xxxxx| 国产亚洲欧美日韩精品| 成人av番号网| 日韩在线精品一区| 欧美激情亚洲另类| 亚洲成avwww人| 91免费精品视频| 在线观看日韩专区| 欧美美女15p| 国产精品热视频| 欧美日韩国产va另类| 亚洲人成电影网站色…| 欧美理论电影网| 欧美激情在线观看视频| 亚洲国产精品久久精品怡红院| 中文字幕亚洲综合久久筱田步美| 欧美性猛交xxxx乱大交| 欧美日韩中国免费专区在线看| 亚洲女同精品视频| 黑人巨大精品欧美一区二区| 国产成人精品亚洲精品| 国产精品一区二区性色av| 亚洲久久久久久久久久久| 欧美精品成人91久久久久久久| 奇米一区二区三区四区久久| 亚洲视频在线观看视频| 91在线免费看网站| 米奇精品一区二区三区在线观看| 亚洲欧美在线看| 精品视频在线播放色网色视频| 日韩av在线一区二区| 亚洲欧美日韩精品久久| 久久国产加勒比精品无码| 97av视频在线| 日韩综合视频在线观看| 久久久久久网站| 日韩av电影国产| 一区二区中文字幕| 日韩精品福利在线| 久久亚洲电影天堂| 亚洲午夜精品视频| 亚洲成人精品在线| 欧美激情日韩图片| 午夜精品一区二区三区在线视频| 国内外成人免费激情在线视频网站| 在线观看日韩www视频免费| 国产xxx69麻豆国语对白| 亚洲高清免费观看高清完整版| 91免费在线视频网站| 国产精品高潮粉嫩av| 欧美大成色www永久网站婷| 午夜精品久久久久久久99黑人| 91精品在线国产| 美日韩在线视频| 亚洲精品女av网站| 国产99久久精品一区二区 夜夜躁日日躁| 欧美激情精品久久久久久大尺度| 成人精品一区二区三区| 最近中文字幕日韩精品| 国产精品视频公开费视频| 亚洲视频在线视频| 亚洲午夜性刺激影院| 国产精品香蕉在线观看| 亚洲视频日韩精品| 国产精品中文字幕在线观看| 国产99视频在线观看| 亚洲一级黄色片| 国产视频精品免费播放| 亚洲丝袜一区在线| 亚洲激情成人网| 亚洲欧美国产一本综合首页| 午夜精品久久久久久久99热浪潮| 日韩**中文字幕毛片| 97热精品视频官网| 亚洲黄色免费三级| 亚洲国产成人91精品| 97精品国产97久久久久久春色| 亚洲最新在线视频| 亚洲综合最新在线| 国产精品久久久久久久7电影| 美女av一区二区三区| 国模视频一区二区三区| 国产欧美最新羞羞视频在线观看| 国产精品自拍视频| 啊v视频在线一区二区三区| 成人国产精品久久久| 97人人爽人人喊人人模波多| 青草青草久热精品视频在线观看| 亚洲最大成人免费视频| 亚洲欧洲av一区二区| 亚洲欧洲在线观看| 日韩国产在线播放| 中文字幕亚洲在线| 午夜精品www| 欧美—级a级欧美特级ar全黄| 日韩精品欧美国产精品忘忧草| 久久九九精品99国产精品| 欧美区二区三区| 日韩欧美国产网站| 久久人人爽人人爽人人片av高清| 亚洲欧美一区二区三区四区| 一区二区三区黄色| 精品国产欧美一区二区三区成人| 欧美高清视频在线观看| 国产日本欧美在线观看| 欧美三级xxx| 欧美日韩成人在线观看| 亚洲欧洲日产国产网站| 97在线看免费观看视频在线观看| 97精品一区二区三区| 欧美猛交ⅹxxx乱大交视频| 欧日韩在线观看|