代码之家  ›  专栏  ›  技术社区  ›  bilpor

asp.net Core 2.1 MVC验证程序不工作

  •  0
  • bilpor  · 技术社区  · 6 年前

    我有以下页面:

    @model LogonModel
    <div class="login-modal modal">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Welcome</h5>
            </div>
    
            <div class="modal-body">
                @if (!ViewData.ModelState.IsValid)
                {
                    <div class="alert alert-danger">
                        @foreach (var modelState in ViewData.ModelState)
                        {
                            <ul><li>@Html.ValidationMessage(modelState.Key, modelState.Value)</li></ul>
                        }
                    </div>
                }
    
                <div class="row">
                    <div class="col-md-12">
                        <p>Don't have an account? <a href="#">Contact us now.</a></p>
    
                        <form asp-action="Login" class="login-form">
                            <div asp-validation-summary="ModelOnly" class="validation-summary text-danger"></div>
    
                            <div class="form-group">
                                <label asp-for="EmailAddress" class="control-label">Email Address</label>
                                <input asp-for="EmailAddress" class="form-control" />
                                <span asp-validation-for="EmailAddress" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="Password" class="control-label"></label>
                                <input type="password" asp-for="Password" class="form-control" />
                                <span asp-validation-for="Password" class="text-danger"></span>
                            </div>
    
                            <div class="form-group">
                                <input type="submit" value="Sign in" class="btn btn-default login-submit" />
                            </div>
    
                            <div class="form-check">
                                <input type="checkbox" class="form-check-input" asp-for="RememberUser">
                                <label class="form-check-label" asp-for="RememberUser">Remember my account details</label>
                            </div>
    
                            <div class="form-group">
                                <a href="#">Login using a subscription ID</a><br />
                                <a href="#">Forgot your password?</a>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    

    最初,控制器的post只是在submit按钮上,验证器工作。i、 e.省略电子邮件,验证程序将显示一条错误消息。因为其他原因。当我按下submit按钮时,我会在进入控制器之前调用jQuery函数,在javascript中,我要做的第一件事是:

    var loginForm = $(".login-form");
    
        if (loginForm.valid()) {…..
    

    这似乎不起作用,因为即使我关闭电子邮件,例如,我的javascript也会被调用,它仍然会遍历我的if语句中的代码。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Chris Pratt    6 年前

    jQuery验证只在输入被关注/修改或表单被修改时触发 事实上 valid 方法仅报告已触发验证的输入的状态。换句话说,它有可能回来 true

    无论长短,你都需要打电话 validate

    loginForm.validate();
    if (loginForm.valid()) {
        ...
    }