ASP.NET试图编译注释的代码行。为什么?

时间:2012-01-09 12:57:06

标签: asp.net .net ajaxcontroltoolkit

我的Web应用程序中的某个aspx页面上有这样的代码:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <div>
        <asp:Label ID="lbl1" runat="server" Text="Laber1" />
        <asp:Button ID="btn1" runat="server" Text="Button1" onclick="btn1_Click" />
    </div>
    </ContentTemplate>
</asp:UpdatePanel>

<!--
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>
<asp:TextBox ID="txtAjaxToolkit" runat="server" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtAjaxToolkit" /> 
-->
</asp:Content>

当我编译项目并在浏览器中转到此页面时,我得到了这个例外:

[InvalidOperationException: На страницу можно добавить только один экземпляр ScriptManager.] 

(翻译:“此页面上只允许使用ScriptManager的一个实例”)。

如果第二个脚本管理器(ToolkitScriptManager)位于注释中,为什么会收到此消息?

我使用的是ASP.NET 4和ASP.NET Ajax Control Toolkit。

P:对不起我的英文。

2 个答案:

答案 0 :(得分:7)

使用服务器端comment语法。

<%---
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>
<asp:TextBox ID="txtAjaxToolkit" runat="server" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtAjaxToolkit" />
---%>

答案 1 :(得分:4)

您已使用 HTML 注释,但标记引擎并不关心 - 它仍会尝试生成该HTML注释的内容。毕竟,您可能需要在评论中添加时间戳等内容。

你想要server-side comment,就像这样;

<%--
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"/>
<asp:TextBox ID="txtAjaxToolkit" runat="server" />
<asp:CalendarExtender ID="CalendarExtender1" runat="server" 
                      TargetControlID="txtAjaxToolkit" /> 
--%>

所有这一切都需要弄清楚什么会发现什么是评论 - HTML <!-- comment -->针对的是浏览器; `&lt;% - comment - %&gt;针对ASPX处理器。