はじめに: Anthem は、ASP.NET 1.1、2.0 をサポートする便利な Ajax フレームワークです。
このフレームワークのすべてのコントロールは ASP.NET 独自のサーバー コントロールを継承するため、これらのコントロールのプロパティと動作のほとんどすべてが保持されます (PostBack を CallBack の非リフレッシュ呼び出しに変更する場合を除く)。したがって、学習曲線は非常に緩やかです。
今日、Anthem を使用しているときに厄介なデバッグの問題に遭遇しました。これをここに記録します。
以下のコードでは、Anthem.Repeater コントロールを使用します。
EnableCaching="false">
AutoUpdateAfterCallBack="False">
<ヘッダーテンプレート>
選択 |
ファイル名と図面名 |
送信する必要があります |
オリジナルですか? |
備考 |
<アイテムテンプレート>
' /> |
' /> |
' width="30" /> |
' 繰り返し方向="水平"> オリジナル コピー |
|
<フッターテンプレート>
フッターテンプレート>
テーブル>
このコードを実行すると、「不明なランタイム エラー」という JS エラーが発生することがあります。
また、このエラーは特定の状況でのみ発生し、他の同様の状況では正常です。
幸いなことに、VS 2005 は非常に強力なクライアント側スクリプト デバッグ機能を提供します。私は最終的に、Anthem によって生成されたコード行にエラーがあることを特定しました。
control.innerHTML = result.controls[コントロールID];
関連情報を確認したところ、IEではinnerHTML属性に値を代入する際に、代入された値がチェックされることが分かりました。適切な形式でない場合、「不明なランタイム エラー」が発生する可能性があります。そこで、anthem.Repeaterが出力したHTMLに何か問題があると判断しました。上記のコードで強調表示されている 2 行からわかるように、テーブル ラベルはリピーターの外側にあります。したがって、リピーター自体は、全体が整形式ではなく、一連の tr を出力します。
そこで、テーブルタグの先頭と末尾をそれぞれRepeaterのHeaderTemplateとFooterTemplateに配置したところ、問題は解決しました。
(以前 table タグを外に置いたのは、HeaderTemplate と FooterTemplate 内に置いたときに、VS デザイナーがデザイン ビューに切り替えられなかった理由がわかりません。このように変更すると問題が解決します。 )
変更が成功すると、コードは次のようになります。
EnableCaching="false">
<ヘッダーテンプレート>
選択 |
ファイル名と図面名 |
送信する必要があります |
オリジナルですか? |
備考 |
<アイテムテンプレート>
' /> |
' /> |
' width="30" /> |
' 繰り返し方向="水平"> オリジナル コピー |
|
<フッターテンプレート>
テーブル>
フッターテンプレート>
今回デバッグしてみて感じたのは、Ajaxはインターフェースのレスポンスが速いというメリットに加えて、大量のjsを導入することでデバッグの難易度が上がっていることもあり、適用する際にはやはり選択が必要だということです。状況。 http://www.cnblogs.com/RChen/archive/2006/08/06/anthem_debug.html
すべてに Ajax を使用することはできません。