我在母版页中使用带有脚本管理器的母版页和内容页。内容页面应该显示搜索查询的结果以及与这些结果相关的一些图像。为了提高响应时间,我使用内容页面的 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>
// 与 ItemTemplate 相同,图像面板命名为 altImagePanel
SearchResultsContent 是放置转发器的 asp:Content 的 ID。问题是 pageLoad 中设置 ImagePanel 的 innerHtml 的语句抛出异常,指出找不到 SearchResultsContent_webRepeater_ImagePanel_X。我查看了 HTML 源代码,它显示 ImagePanel 的 ID 为 SearchResultsContent_webRepeater_ImagePanel_X,其中 X 是一个数字。但是,如果我使用没有母版页的单个 ASPX 页面执行此操作,则此方法可以正常工作。有谁知道我做错了什么或者我需要做什么才能使这个工作与母版和内容页面一起工作?
谢谢,