我有一个使用Microsoft Reporting ReportViewer的页面。该报告似乎正在运行,但该页面给了我两个javascript错误,两者都是“'系统'未定义”。
检查html输出,我可以看到此页面没有加载ScriptResource.axd文件。以下是< form runat =“server”>:
生成的输出正常页面:
<script src="/ScriptResource.axd?d=A7zLSiYT-QHoLdLnJ4qcSxAMYrwOyrYaDQLr4063d4z_oKYldDliKqXbyFe5lSU_BLW1XY7gevJ3qbD0cmlGqFb4n7TXEUowGbFVlAH6qW01&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&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&Version=9.0.30729.1&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文件的引用
&lt; ScriptManager&gt; tag在以下两种情况下都会产生这种情况:
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ctl00$smManager', document.getElementById('aspnetForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
//]]>
</script>
这就是javascript错误的来源 - 引用Sys对象
那么从&lt; form runat =“server”&gt;触发不同输出的是什么?
答案 0 :(得分:1)
我仍然没有答案,但确实在互联网上找到了解决方法:http://forums.asp.net/p/1318006/2617880.aspx#2617880
如果我将报表查看器阻塞到用户控件中,然后在页面上拥有用户控件,则表单标记将正确呈现。
注意,我也在使用母版页,所以也许这与此有关。表单标签位于母版页中,然后我在内容部分中有一个带有用户控件的内容页面,然后是用户控件中的ReportViewer。这很有效。
不起作用的是带有表单标记的母版页(runat = server),以及内容部分中带有ReportViewer的内容页面。在这种情况下,没有包含任何ASP.NET AJAX脚本,导致“系统未定义”错误。