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

首頁 > 學院 > 開發(fā)設計 > 正文

使用 Anthem.NET 框架的一個調(diào)試經(jīng)歷

2019-11-18 17:04:34
字體:
供稿:網(wǎng)友

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

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

在下面的代碼中,我用了一個 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>
這個代碼在運行時,有時候會出現(xiàn)一個 JS 錯誤:“未知的運行時錯誤”。
而該錯誤只在特定情況下發(fā)生,在其他類似情況下正常。
幸虧 VS 2005 提供了非常強大的客戶端腳本調(diào)試功能。我終于將錯誤定位到了 Anthem 產(chǎn)生的一行代碼上:
control.innerHTML = result.controls[controlID];
查了相關資料后發(fā)現(xiàn),在 IE 下,對 innerHTML 屬性賦值的時候,會對所賦的值進行檢查。如果不是 well formed, 則可能會出現(xiàn)“未知的運行時錯誤”。

于是我判斷 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>
經(jīng)過這次的調(diào)試,我覺得 Ajax 除了帶來了界面上響應迅速的好處之外,因為引入大量 js,也增大了調(diào)試的難度,因此應用的時候還是要根據(jù)情況取舍。不能什么都上 Ajax.

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贵州省| 禄丰县| 左云县| 广昌县| 康平县| 巴楚县| 正蓝旗| 合作市| 迁西县| 扎兰屯市| 方正县| 淅川县| 阳信县| 新野县| 齐齐哈尔市| 宕昌县| 临湘市| 长乐市| 花莲市| 金溪县| 仙居县| 伽师县| 长春市| 斗六市| 上林县| 西和县| 金秀| 武山县| 武宁县| 紫金县| 旬邑县| 浦城县| 郑州市| 大同县| 双流县| 古田县| 广汉市| 白山市| 原阳县| 双牌县| 镇坪县|