【问题标题】:Why is the script include for ScriptResource.axd not being rendered on some pages?为什么 ScriptResource.axd 的脚本包含未在某些页面上呈现?
【发布时间】:2010-10-03 08:38:59
【问题描述】:

我有一个使用 Microsoft Reporting ReportViewer 的页面。该报告似乎正在运行,但该页面给了我两个 javascript 错误,它们都是“'Sys' 未定义”。

检查 html 输出,我可以看到该页面没有加载 ScriptResource.axd 文件。这是

生成的输出:

普通页面:

<script src="/ScriptResource.axd?d=A7zLSiYT-QHoLdLnJ4qcSxAMYrwOyrYaDQLr4063d4z_oKYldDliKqXbyFe5lSU_BLW1XY7gevJ3qbD0cmlGqFb4n7TXEUowGbFVlAH6qW01&amp;t=ffffffff81a772fc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>

<script src="/ScriptResource.axd?d=A7zLSiYTQHoLdLnJ4qcSxAMYrwOyrYaDQLr4063d4z_oKYldDliKqXbyFe5lSU_pP3jafRTfoGWk6oNhALZysXq7AipBxlz6Hg1wbpmi5swSCq2gf8Ifthok9c1Qyjf0&amp;t=ffffffff81a772fc" type="text/javascript"></script>
<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"  
  value="/wEWBwLqzd6VBwLe87a+BQLe87a+BQKMhJXjCwLDhbnwDQLDhc2YCALFibnGClZTK/SWwK6x3zLDgngtDRWbwIkm" />
</div>

这里是带有reportviewer控件的页面:

<script src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=9.0.30729.1&amp;Name=Microsoft.Reporting.WebForms.Scripts.ReportViewer.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function RVClientImageToggle(shouldEnable, image1Id, image2Id)
{
var enableHover = document.getElementById(image1Id);
var disableHover = document.getElementById(image2Id);
if (enableHover == null || disableHover == null)
    return;
if (shouldEnable)
{
    enableHover.style.display = "";
    disableHover.style.display = "none";
}
else
{
    disableHover.style.display = "";
    enableHover.style.display = "none";
}
}//]]>
</script>

<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWGQLrm7KJCwLe87a+BQLe87a+BQKMhJXjCwLDhbnwDQLDhc2YCALFibnGCgL4rMvOCQL4rK/NCQKp9KnKBgKp9I3JBgKQitCjCALzoZ6fCQLzoYKeCQLC2pe+DgLC2vu8DgKsmc6MBgLYo/6MDgKsz4boDQLCqZGDBgL97pJQAv3u/vQHAv3u6pkPAv3u1r4GAv3ugpYJAOTw7r3aR/RClkJpkBgvgn/NGjI=" />
</div>

你可以看到——没有对 axd 文件的引用

标签在任何一种情况下都会产生这个:

    <script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ctl00$smManager', document.getElementById('aspnetForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
//]]>
</script>

这就是 javascript 错误的来源——引用 Sys 对象

那么是什么触发了

的不同输出?

【问题讨论】:

    标签: asp.net asp.net-ajax


    【解决方案1】:

    我仍然没有答案,但确实在互联网上找到了解决方法:http://forums.asp.net/p/1318006/2617880.aspx#2617880

    如果我将报表查看器卡在用户控件中,然后只在页面上放置用户控件,则表单标签将正确呈现。

    注意,我也在使用母版页,所以可能与此有关。表单标签在母版页中,然后我在内容部分有一个带有用户控件的内容页,然后是用户控件中的 ReportViewer。这行得通。

    不起作用的是带有表单标签 (runat=server) 的母版页,以及内容部分中带有 ReportViewer 的内容页。在这种情况下,没有包含任何 ASP.NET AJAX 脚本,从而导致“Sys is undefined”错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-04
      • 2021-01-15
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多