Проверьте ввод пользователя, чтобы взять символы и цифры, используя регулярное выражение не работает - PullRequest
0 голосов
/ 11 февраля 2020

Я делаю проверку при входе в систему. Я хотел быть похожим на ab12123. поэтому я проверяю его по javascript, чтобы проверить по нажатию кнопки. если он недействителен, он должен показать сообщение. проблема в том, что функция не работает, и я открываю инструменты разработчика для проверки javascript, ошибки нет. мнение:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">

        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            <label class="control-label col-md-2">
                User Login <span class="required" id="star">*</span>
            </label>
            <div class="col-md-4">

                @Html.TextBox("UserLogin", null, new { @class = "form-control", required = "required" , id= "UserLogin" })

                <div class="col-lg-3" id="checkID" hidden>
                    <label style="color:red">Please enter the ID in the Proper Format Numbers only EX:kl12123</label>
                </div>
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2">
                Username <span class="required" id="star">*</span>
            </label>
            <div class="col-md-4">
                @Html.TextBox("UserName" , null, new { @class = "form-control", required = "required", id = "UserName" } )

            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2">
                Groups <span class="required" id="star">*</span>
            </label>
            <div class="col-md-4">
                @Html.DropDownList("GroupID", null, htmlAttributes: new { @class = "form-control", required = "required" , id= "GroupID" })
                @Html.ValidationMessageFor(model => model.GroupID, "", new { @class = "text-danger" })
            </div>
        </div>



        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="button" class="btn btn-success" value="ValidateMe" onclick="ValidateMe()" />
            </div>
        </div>
    </div>
}

javascript:

 function ValidateMe() {
        //$('#GroupID').on('change', function () {

        var IDValid = false;
        var Login = $('#UserLogin').val();
        var name = $('#UserName').val();
        var GroupId = $('#GroupID').val();

            if (Login.length < 6) {
                $('#checkID').show();
                IDValid = false;
            }
            else {
                var regexnumber = new RegExp(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/);
                if (regexnumber.test(Login)) {
                    $('#checkID').hide();
                    IDValid = true;
                }
                else {
                    $('#checkID').show();
                    IDValid = false;
                }

            }
            if (IDValid == true) {
                var data = {
                    UserLogin: Login,
                    UserName: name,
                    UserGroup: GroupId
                };
                $.ajax({
                    type: 'POST',
                    url: '/Account/SaveUser',
                    data: data

                });
            }
    }

Я ценю вашу помощь в этом вопросе. Спасибо.

1 Ответ

1 голос
/ 11 февраля 2020

MVC может автоматически обрабатывать проверку на стороне клиента, используя jQuery -validate, который должен быть предварительно настроен. Он использует атрибуты модели для установки требований проверки и расширения Html.HelperFor для привязки модели. Вы должны увидеть эту строку в App_Start/BundleConfig.cs, подтверждающую, что она установлена:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.validate*"));

Если нет, вы можете скачать ее здесь , разархивировать и установить в каталог Scripts, а также добавить Выше строки к вашему BundleConfig.cs.

Вы бы использовали этот метод следующим образом:

Модель

using System.ComponentModel.DataAnnotations;

public class User
{
    [Required]
    [RegularExpression(@"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}", ErrorMessage = "Please enter the ID in the Proper Format Numbers only EX:kl12123")]
    public string UserLogin { get; set; }
    [Required]
    public string UserName { get; set; }
    [Required]
    public int UserGroup
}

Вид

@model Namespace.User

// Replace the @Html.TextBox() helpers with these:

@Html.TextBoxFor(model => model.UserLogin, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UserLogin, "", new { @class = "text-danger" })

@Html.TextBoxFor(model => model.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })

@Html.DropDownListFor(model => model.UserGroup, null, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.UserGroup, "", new { @class = "text-danger" })

// Place the following at the very bottom of your view:
@section scripts
{
    @Scripts.Render("~/bundles/jqueryval")
}

Дает нам это:

Result of an incorrectly formatted UserLogin

...