首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ScriptManager在ASP.NET (网页窗体)中引起RequiredFieldValidator上的回发?

为什么ScriptManager在ASP.NET (网页窗体)中引起RequiredFieldValidator上的回发?
EN

Stack Overflow用户
提问于 2015-08-07 20:18:42
回答 2查看 1.2K关注 0票数 1

在添加ScriptManager之前,当我单击登录按钮时,它显示了没有postback页面的必填字段警告,但在那之后,它开始先执行postback,然后验证字段。

当页面上有UpdatePanel时,需要添加ScriptManager

我怎样才能修复这个问题,使它不会在RequiredFieldValidatorpostback

登录页面

代码语言:javascript
复制
<form id="signinform" runat="server" defaultfocus="username" defaultbutton="LogInBtn">

    <asp:scriptmanager id="FormScriptManager" runat="server"></asp:scriptmanager>

    <div class="form-signup">

        <div class="form-group form-group-info">
            <div class="append-icon m-b-30">
                <asp:textbox id="username" runat="server" cssclass="form-control c-white form-control-success" placeholder="Username" />
                <i class="mdi-action-perm-identity c-light"></i>
                <asp:requiredfieldvalidator runat="server" id="UserNameValidator" controltovalidate="username" display="Dynamic" validationgroup="LoginVAL" setfocusonerror="true" cssclass=" f-11 c-red m-b-0" errormessage="The username is required." />
            </div>
        </div>

        <div class="form-group form-group-info">
            <div class="append-icon m-b-30">
                <asp:textbox id="Password" textmode="Password" runat="server" cssclass="form-control c-white form-control-success" placeholder="Password" />
                <i class=" mdi-action-lock-outline c-light"></i>
                <asp:requiredfieldvalidator runat="server" id="PasswordValidator" controltovalidate="Password" display="Dynamic" setfocusonerror="true" validationgroup="LoginVAL" cssclass="f-11 c-red m-b-0" errormessage="The password is required." />
            </div>
        </div>

        <div class="togglebutton togglebutton-info">
            <label class="c-light normal f-11 m-b-15">
                <input type="checkbox" runat="server" name="RememberMe" id="RememberMe" class="md-checkbox">
                Remember me?
            </label>
        </div>
    </div>

    <asp:placeholder runat="server" id="ErrorMessage" visible="false" viewstatemode="Disabled">
        <p id="ErrorMessageContainer" runat="server" class="badge badge-danger m-b-5 f-11">
            <asp:Literal runat="server" ID="FailureText" ViewStateMode="Disabled" />
        </p>
    </asp:placeholder>

    <div class="progress-demo">
        <asp:linkbutton id="LogInBtn" runat="server" onclick="LogIn" text="Login" cssclass="btn btn-material-indigo btn-block btn-embossed ladda-button" validationgroup="LoginVAL" data-style="zoom-in"></asp:linkbutton>
    </div>

    <p>
        <%--   Enable this once you have account confirmation enabled for password reset functionality--%>
        <asp:hyperlink runat="server" id="ForgotPasswordHyperLink" viewstatemode="Disabled">Forgot your password?</asp:hyperlink>
    </p>


    <div class="modal fade" id="LoginModal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
        <div class="modal-dialog">
            <div class="modal-content">
                <div id="LoginModalHeader" runat="server" class="modal-header bg-aero">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icons-office-52"></i></button>
                    <h4 class="modal-title c-white">
                        <asp:label id="LoginModalTitle" runat="server" />
                    </h4>
                </div>

                <asp:updatepanel id="LoginModalUpdatePanel" runat="server">
                    <ContentTemplate>

                        <div class="modal-body m-t-10">
                            <p class=" c-gray w-300 f-13"><asp:Label ID="LoginModalDetails" runat="server" /></p>
                        </div>
                        <div class="modal-footer">
                            <asp:LinkButton runat="server" ID="ResendConfirm" OnClick="SendEmailConfirmationToken" Text="Resend Confirmation" Visible="false" CssClass="btn btn-material-blue-grey btn-embossed" />
                            <button id="LoginModalCancel" runat="server" type="button" class="btn btn-default btn-embossed" data-dismiss="modal">Cancel</button>
                        </div>

                    </ContentTemplate>
                    </asp:updatepanel>

            </div>
        </div>
    </div>

</form>

我很感谢你为我的问题找到解决方案的努力。

EN

回答 2

Stack Overflow用户

发布于 2016-09-24 01:27:32

我前段时间遇到了同样的问题,并能够通过Page.Validate();解决它。

基本上,在我添加ScriptManager之前,一切都运行良好。当我单击update按钮时,字段验证器将运行并阻止回发,直到满足要求为止。在添加ScriptManager标签后,页面将回发,使我的验证器几乎毫无用处。

我所做的是在我的更新(提交)按钮点击事件上添加:

代码语言:javascript
复制
page.validate();
if (Page.IsValid)
{
    // Your update or submit code here.
}

这似乎工作得很好!

票数 1
EN

Stack Overflow用户

发布于 2015-08-07 21:18:59

像这样写..

代码语言:javascript
复制
 <asp:updatepanel id="LoginModalUpdatePanel" runat="server">
 <ContentTemplate>
//paste all codes inside here 
</ContentTemplate>
</asp:updatepanel>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31877559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档