Asp.net 为什么脚本include for ScriptResource.axd没有在某些页面上呈现?

Asp.net 为什么脚本include for ScriptResource.axd没有在某些页面上呈现?,asp.net,asp.net-ajax,Asp.net,Asp.net Ajax,我有一个使用Microsoft Reporting ReportViewer的页面。该报告似乎正在运行,但页面给了我两个javascript错误,它们都是“'Sys'未定义” 通过检查html输出,我可以看到此页面没有加载ScriptResource.axd文件。以下是从生成的输出: 普通页面: // 这里是带有reportviewer控件的页面: <script src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&am

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

通过检查html输出,我可以看到此页面没有加载ScriptResource.axd文件。以下是从生成的输出:

普通页面:


//
这里是带有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对象


那么,是什么触发了不同的输出呢?

我仍然没有答案,但在互联网上找到了一个解决方法:

如果我将报表查看器插入用户控件,然后将用户控件放在页面上,则表单标记将正确呈现

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


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

我仍然没有答案,但在internet上找到了一个解决方法:

如果我将报表查看器插入用户控件,然后将用户控件放在页面上,则表单标记将正确呈现

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

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

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