GrpSMK Ответов: 2

Проверка формы не показывает обязательный валидатор полей


Я"м с помощью asp.net в MVC 4 форма проверок в использовании скрипт для проверки оповещения.его работает нормально,но я заявил, требуются модели для конкретного поля,он не работает.

Теперь я хочу, чтобы рядом с текстовым полем отображался необходимый msg. вот и все

Что я уже пробовал:

Модель
[Required(ErrorMessage = "Please Enter Instagram Name")]
      [Display(Name = "Enter First Name")]
      [StringLength(50, MinimumLength = 3, ErrorMessage = "First Name must be between 3 and 50 characters!")]
      public string instagramhandle { get; set; }

Контроллер для отображения оповещений
if (res == 0)
                {
                    string emailRegex = @"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
                    string phoneRegex = @"^\d{10}$";


                    Regex re = new Regex(emailRegex);
                    if (!re.IsMatch(EmailId))
                    {
                        Message = "Emailfailed";
                        return Json(Message, JsonRequestBehavior.AllowGet);
                        // ModelState.AddModelError("Email", "Please Enter Correct Email Address");
                    }

вид

<form method="POST">

       <script>
       $(function () {
           $("#dialog").dialog();
       });
       $('#btnpsubmit').hide();
       $(function () {<pre>    $('#btnpsubmit').click(function () {

                       if (whichTime == 1) {

                           var firstname = $('#id_firstname').val();
                           var lastname = $('#id_Lastname').val();
                           var phoneno = $('#id_Phonename').val();
                           var handlename = $('#id_Instagram').val();
                           var EmailId = $('#id_EmailId').val();
                           var password = $("#id_passwordregister").val();

                           if (($('#id_firstname').val().length > 0) && ($('#id_Instagram').val().length > 0) && ($('#id_passwordregister').val().length > 0) && ($('#id_EmailId').val().length > 0) && ($('#id_Lastname').val().length > 0) && ($('#id_Lastname').val().length > 0) && ($('#id_Phonename').val().length > 0))

                               $.post("/Registration/Registration", {
                                   handlename: handlename,
                                   EmailId: EmailId,
                                   firstname: firstname,
                                   lastname: lastname,
                                   phoneno: phoneno,
                                   password: password

                               }).done(function (data) {

                                   if (data == "success") {
                                       //alert("Inserted Successfully!");
                                       location.href = '//' + window.location.host + '/home/plans';
                                   }
                                   if (data == "failed") {
                                       //location.href = '//' + window.location.host + '/home/plans';
                                       alert("Data Failed to insert!");
                                   }
                                   if (data == "Emailfailed") {
                                       //location.href = '//' + window.location.host + '/home/plans';
                                       alert("Please Enter Correct Email Address!");
                                   }

2 Ответов

Рейтинг:
2

Richard Deeming

Вы можете довольно легко заставить валидаторы аннотаций данных работать на стороне клиента:

  1. Добавьте ссылку на Microsoft. jQuery.Ненавязчивый.Утверждение[^] Пакет NuGet;
  2. Добавить параметры для вашего web.config файл:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <appSettings>
            <add key="ClientValidationEnabled" value="true" />
            <add key="UnobtrusiveJavaScriptEnabled" value="true" />
        </appSettings>
    </configuration>

    ОПЕРАЦИОННАЯ: Включите проверку с помощью кода:
    HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
  3. Убедитесь, что у вас определен пакет "jqueryval" :
    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(  
        "~/Scripts/jquery.validate.js",  
        "~/Scripts/jquery.validate.unobtrusive.js"));
  4. Выведите пакет "jqueryval" на любой вид, который этого требует:
    @section Scripts {  
        @Scripts.Render("~/bundles/jqueryval")  
    }
  5. Добавьте сводку проверки в свою форму:
    @Html.ValidationSummary()
  6. Отображение ошибок проверки рядом с каждым полем:
    @Html.ValidationMessageFor(m => m.FieldName, "*")

Теперь ваша форма будет автоматически проверяться на клиенте на основе поддерживаемых атрибутов. Вы также можете создать свои собственные пользовательские атрибуты проверки с поддержкой на стороне клиента или использовать удаленную проверку для вызова метода проверки на стороне сервера из валидатора на стороне клиента.

ASP.NET MVC 5 - валидатор форм JQuery[^]
Полное руководство по валидации в ASP.NET MVC 3-Часть 1[^]
Полное руководство по валидации в ASP.NET MVC 3-Часть 2[^]
Как реализовать удаленную проверку в ASP.NET MVC[^]


Рейтинг:
0

Super Superman

Добавление этих атрибутов действительно полезно только для проверки модели, когда она отправлена обратно в контроллер. Они ничего не делают на переднем конце, если вы не используете ненавязчивую проверку (которая всегда была немного неуклюжей).

Если вам нужна внешняя проверка, вам лучше использовать, например, атрибуты HTML:

<input type="text" id="id_firstname" maxlength="50" required pattern=".{3,50}" title="Enter a valid name" />

Сделайте свой метод формы "post" и установите тип кнопки как "submit", и все должно работать оттуда. Не забудьте проверить свой объект модели, когда он также будет отправлен в контроллер.


Richard Deeming

Ненавязчивая проверка не особенно неуклюжа, по крайней мере в последних версиях. :)

Super Superman

Может быть, это просто мне не очень понравилось :) Он также не работает в современном мире СПА-приложений, в то время как проверка HTML делает это (Angular и т. д.).