添加脚本管理器

时间:2015-09-20 11:16:09

标签: c# asp.net webforms updatepanel

我的母版页面上有一些用于电子邮件订阅的控件。

网络表单工作正常,但在没有输入电子邮件地址的情况下不会触发验证。

<asp:UpdatePanel ID="updSubscribe" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
            <asp:Panel ID="pnlSubscribe" runat="server" >
                <asp:TextBox ID="txtEmail" CssClass="form-control form-subscribe-input" runat="server" placeholder="YOUR EMAIL"></asp:TextBox>
                 <asp:RequiredFieldValidator ID="rfvEmailSub"  runat="server" ErrorMessage="*" ControlToValidate="txtEmail" ValidationGroup="SubEmail" ></asp:RequiredFieldValidator>
                 <asp:RegularExpressionValidator ID="revEmailSub" runat="server" ErrorMessage="*" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="SubEmail" ></asp:RegularExpressionValidator>
                 <span class="input-group-btn">
                    <asp:Button ID="btnSubscribe" CssClass="btn btn-maroon" runat="server" ValidationGroup="SubEmail" Text="Subscribe" onclick="btnSubscribe_Click" />
                </span>
            </asp:Panel> 
            <asp:Panel ID="pnlSubscribeMSG" CssClass="pnlSubscribeMSG" runat="server" >
                <asp:Label ID="lblSubscribeMSG" runat="server" Text="">
            </asp:Label>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>

我不确定代码有什么问题。

更新

在进一步的故障排除中,我注意到相同的代码适用于页面上没有母版页的验证。

不确定实际发生了什么。

1 个答案:

答案 0 :(得分:2)

问题归因于script manager,因为它无法正确加载脚本文件导致验证失败,花了几个小时后我很幸运地弄明白了。

所以不要将脚本管理器添加为

<asp:ScriptManager runat="server"></asp:ScriptManager>

我将其添加为

<asp:ScriptManager runat="server">
    <Scripts>
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" />
        <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
    </Scripts>
</asp:ScriptManager>

link解决方案来源