マスター ページにスクリプト マネージャーがあるマスター ページとコンテンツ ページを使用しています。コンテンツ ページには、検索クエリの結果と、それらの結果に関連するいくつかの画像が表示されるはずです。応答時間を改善するために、コンテンツ ページの aspx ファイルで定義されている javascript pageLoad() 関数を使用して画像をロードしています。結果は、更新パネル内に配置されたリピーター コントロールを使用して表示されます。リピーター コントロールは、結果の説明を保持する div 要素と、画像を保持する別の div 要素を発行します。最初は、画像 div は空です。コンテンツページのセクションに配置する pageLoad 関数は以下の通りです。
function pageLoad() {
var anchors = document.getElementsByName("resultAnchor");
var count = anchors.length;
var href = "";
for (var i = 0; i < count; i++) {
href = anchors[i].href;
if ((i % 2) == 0) {
document.getElementById("SearchResultsContent_webRepeater_ImagePanel_" + i).innerHtml = href;
}
else {
document.getElementById("SearchResultsContent_webRepeater_altImagePanel_" + i).innerHtml = href;
}
}
}
リピータ制御コードを以下に示します。
<asp:Repeater ID="webRepeater" runat="server" >
<ItemTemplate>
<div id="resultControl" class="resultControl" runat="server">
<div class="headerImage">
<img src='<%# Eval("Favicon") %>' alt="" class="favicon"/>
</div>
<div class="resultInfo">
<a href='<%# Eval("Url") %>' class="resultTitle" name="resultAnchor"><%# Eval("Title") %></a>
<br />
<span class="resultDescription"><%# Eval("Description") %></span>
<br />
<span class="resultDisplayLink"><%# Eval("DisplayLink") %></span>
<span class="resultFoundOn">Found On: <%# Eval("FoundOn") %></span>
<br />
<div id="imagePanel" class="ImagePanel" runat="server" />
</div>
<br />
</div>
</ItemTemplate>
// altImagePanel という名前の画像パネルを持つ ItemTemplate と同じ
SearchResultsContent は、リピーターが配置される asp:Content の ID です。問題は、ImagePanel の innerHtml を設定する pageLoad のステートメントが、SearchResultsContent_webRepeater_ImagePanel_X が見つからないという例外をスローすることです。HTML ソース コードを調べたところ、ImagePanel の ID が SearchResultsContent_webRepeater_ImagePanel_X (X は数字) として表示されます。ただし、マスター ページのない単一の ASPX ページを使用してこれを行うと、この方法は正常に機能します。私が間違っていることや、マスターページとコンテンツページでこれを機能させるために何をする必要があるか、誰にもわかりませんか?
ありがとう、