Asp.Net Проверка ядра и отправка формы с помощью Ajax?

#jquery #ajax #asp.net-core

Вопрос:

У меня есть форма в модальном всплывающем окне?

 <form asp-controller="Account" asp-action="Register">
<div class="form-area" id="Register-Form" hidden>
    <div class="form-group">
    <input type="password" name="user_Password" class="input-field" maxlength="6" id="Register-NewPassword">
    </div>
    <div class="form-group">
    <input type="number" class="input-field" maxlength="6" autocomplete="off" id="Register-ActiveCode"> 
    </div>
    <div class="form-group text-center">
    <button  type="submit" onclick="return Validate_Register()" class="mybtn">Save </button>
    </div>
</div>
 

Проверка Jquery :

  function Validate_Register() { 
    $.post("/Account/CheckActiveCode", {
        Mobile: Login_Mobile, ActiveCode: Register_Active_Value
    }, function (data) {
        if (data == 1) {
            $.alert({
                title: 'Error',
                content: 'Active Code is Not True',
                rtl: true,
                closeIcon: true,
                type: 'red',
                typeAnimated: true,
                buttons: {
                    confirm: {
                        text: 'Ok',
                        btnClass: 'btn-red',
                    }
                },
            });
            return false;
        }       
            
    });

    return true;
}
 

Контроллер :

 public JsonResult CheckActiveCode(string Mobile , string ActiveCode)
    {            
        if (!_user.UserIsActivate(Mobile, ActiveCode))
        {
            return Json(1);
        }
        return Json(0);
    }
 

Форма контроллера для отправки:

 [HttpPost]
    public IActionResult Register(string mobile_User, string user_Password)
    {
        _user.RegisterUpdateUser(mobile_User, user_Password);
        
        return RedirectToAction("Index", "Home");
    }
 

Я хочу, чтобы форма была отправлена, если проверка (данные==0)
Если (данные==1), форма не будет отправлена и отобразится ошибка?

Ответ №1:

Попробуйте использовать <input type="button"/> для замены <button></button> ,и если data !=1 ,отправьте форму.

html-код:

 <form id="myForm" asp-controller="Account" asp-action="Register">
<div class="form-area" id="Register-Form" hidden>
     <div class="form-group">
            <input name="mobile_User" class="input-field" maxlength="6" id="mobile_User">
        </div>
        <div class="form-group">
            <input type="password" name="user_Password" class="input-field" maxlength="6" id="Register-NewPassword">
        </div>
        <div class="form-group">
            <input type="number" class="input-field" maxlength="6" autocomplete="off" id="Register-ActiveCode">
        </div>
        <div class="form-group text-center">
            <input type="button" onclick="Validate_Register()" class="mybtn" value="Save" />
        </div>
</div>
</form>
 

JS:

 function Validate_Register() {
                $.post("CheckActiveCode", {
                    Mobile: Login_Mobile, ActiveCode: Register_Active_Value
                }, function (data) {
                        if (data == 1) {
                            $.alert({
                                title: 'Error',
                                content: 'Active Code is Not True',
                                rtl: true,
                                closeIcon: true,
                                type: 'red',
                                typeAnimated: true,
                                buttons: {
                                    confirm: {
                                        text: 'Ok',
                                        btnClass: 'btn-red',
                                    }
                                },
                            });
                        } else {
                            $("#myForm").submit();
                        }
                    })

            }
 

Комментарии:

1. Мой код также отправляет форму ,я хочу,чтобы форма не была отправлена, когда (данные == 1), и чтобы отображалась ошибка, к сожалению, после того, как станет 1, форма будет отправлена

2. Да,используйте <input type="button"/> , он не будет отправлен, когда данные==1.

3. Используете ли вы мой html-код,например, <form id="myForm" asp-controller="Account" asp-action="Register"> в моем коде. $("#myForm").submit(); отправит форму ,которая является идентификатором myForm , поэтому вы должны добавить id="myForm" в свою форму, как я показал в своем ответе.