Maison interface Web js tutoriel Validation du formulaire Ajax après que MVC rencontre le bootstrap

Validation du formulaire Ajax après que MVC rencontre le bootstrap

May 23, 2018 am 11:19 AM
ajax bootstrap 表单

Cet article présente principalement en détail la vérification du formulaire ajax après que MVC rencontre bootstrap. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Après avoir utilisé bootstrap, il peut le faire lui-même. erreur, il sera plus difficile de l'utiliser. Si vous utilisez habituellement jquery.validate, vous ne pouvez utiliser que son propre style, et il est plus pratique d'utiliser la vérification du modèle lorsqu'il existe un modèle. Comment le résoudre ?

Bien sûr, vous pouvez écrire un plug-in jquery spécifiquement pour cela, je pense que c'est assez gênant. Si vous aimez écrire des plug-ins, faites quelques recherches.

First Nuget obtient un composant de MVC EditorTemplates pour Bootstrap 3. Avec lui, il y aura quelques modèles, comme un texte relativement simple :

@model object
<p class="form-group@(Html.ValidationErrorFor(m => m, " has-error"))">
  @Html.LabelFor(m => m, new { @class = "control-label" })
  <p class="controls">
    @Html.TextBox(
      "",
      ViewData.TemplateInfo.FormattedModelValue,
      ViewBag.ClearTextField == true ? new { @class = "form-control clear-text-field input-block-level" } : new { @class = "form-control input-block-level" } )
    @Html.ValidationMessageFor(m => m, null, new { @class = "help-block" })
  </p>
</p>
Copier après la connexion

De cette façon, vous pouvez utiliser EditorFor à l'avenir Ensuite, le code HTML requis par bootstrap sera directement affiché, ce qui est plus pratique.

Nous voyons qu'il existe déjà un gestionnaire d'erreurs pour l'échec de la vérification. La deuxième question se pose. Nous avons besoin d'une vérification frontale qui est également acceptable.

Nous continuons donc à utiliser la vérification de modèle fournie avec MVC. Il y a une classe Validation dans le composant que nous venons d'obtenir. Nous y ajoutons d'abord une méthode d'extension pour les

    public static MvcHtmlString ValidationError(this HtmlHelper htmlHelper, string field, string error)
    {
      if (HasError(htmlHelper, ModelMetadata.FromStringExpression(field, htmlHelper.ViewData), field))
        return new MvcHtmlString(error);
      else
        return null;
    }
Copier après la connexion
non fortement typés.

View Vous pouvez ajouter :

    <p class="form-group@(Html.ValidationError("Department", " has-error"))">
      <label class="control-label" for="DepartmentId">所在部门</label>
      <p class="controls">
        <span id="deptname"> </span><a id="btnSelectDepartment">选择部门</a>
        <input class="form-control" data-val="true" data-val-required="部门是必需的。" id="DepartmentId" name="DepartmentId" type="hidden" value="">
        @Html.ValidationMessage("Department", null, new { @class = "help-block" })
      </p>
    </p>
Copier après la connexion

Enfin, gérez la soumission ajax et le traitement de la publication dans le script. Je ne sais pas s'il peut être plus pratique d'utiliser Ajax.BeginForm de MVC, mais personnellement. J'ai l'impression que cette chose n'est pas très flexible. Alors continuez à utiliser ajaxSubmit et jquery.ajax :

//ready
      var $puserform = $("#puserform");
      $puserform.dialog({
        title: '新建用户',//.....
      });
      $("#btnCreateUser").click(function () {
        var nodes = zTreeObjleft.getSelectedNodes();
        if (nodes.length > 0) {
          CreateUserForm($puserform);
        }
      })
 
 
function CreateUserForm(form) {
      var $puserform = form;
      $.ajax({
        url: "CreateUser",
        success: function (html) {
          CreateUserFormSuccessCallback(html, $puserform);
        }
      });
    }
 
    function InitSelectDepartmentWhenCreateUser() {
      $("#btnSelectDepartment").departmentSelection({
        onSelected: function (name, id) {
          $("#deptname").text(name);
          $("#DepartmentId").val(id);
        }
      });
    }
 
    function CreateUserFormSuccessCallback(html, form) {
      var $puserform = form;
      $puserform.children().children().html(html);
      $("#puserform").dialog("open");
      var $form = $puserform.find("form")
      InitSelectDepartmentWhenCreateUser();
      $form.submit(function () {
        $form.ajaxSubmit(function (data) {
          if (data == "success") {
            $("#puserform").dialog("close");
            $("#puserform").clearForm();
          }
          else {
            CreateUserFormSuccessCallback(data, form);
          }
        });
        event.preventDefault();
      });
    }
Copier après la connexion

Dans la méthode Action en arrière-plan, nous pouvons y ajouter une vérification personnalisée :

      if (!DepartmentId.HasValue)
      {
        ModelState.AddModelError("Department", "必须选择部门");
      }
 
      if (ModelState.IsValid)
      {
        user.Id = Guid.NewGuid();
        user.CreateTime = DateTime.Now;
        if (DepartmentId.HasValue)
        {
          var dept = new DeptUserRole();
          dept.DepartmentId = DepartmentId.Value;
          dept.IsMain = true;
          dept.RoleId = RoleId.Value;
          user.DeptUserRoles.Add(dept);
        }
        db.Users.Add(user);
        await db.SaveChangesAsync();
        return Content("success");
      }
 
      return View(user);
Copier après la connexion
Effet approximatif :

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles connexes :

Implémentation de la file d'attente de requêtes AJAX

Un résumé de plusieurs méthodes de soumission de formulaires de manière asynchrone à l'aide d'Ajax

Comment résoudre le problème des tableaux dans les requêtes AJAX

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment introduire le bootstrap dans Eclipse Comment introduire le bootstrap dans Eclipse Apr 05, 2024 am 02:30 AM

Comment introduire le bootstrap dans Eclipse

Comment introduire une idée dans bootstrap Comment introduire une idée dans bootstrap Apr 05, 2024 am 02:33 AM

Comment introduire une idée dans bootstrap

Comment lire les résultats du test d'effet de médiation bootstrap dans stata Comment lire les résultats du test d'effet de médiation bootstrap dans stata Apr 05, 2024 am 01:48 AM

Comment lire les résultats du test d'effet de médiation bootstrap dans stata

750 000 rounds de bataille en tête-à-tête entre grands modèles, GPT-4 a remporté le championnat et Llama 3 s'est classé cinquième 750 000 rounds de bataille en tête-à-tête entre grands modèles, GPT-4 a remporté le championnat et Llama 3 s'est classé cinquième Apr 23, 2024 pm 03:28 PM

750 000 rounds de bataille en tête-à-tête entre grands modèles, GPT-4 a remporté le championnat et Llama 3 s'est classé cinquième

Comment lire les résultats du test de médiation bootstrap Comment lire les résultats du test de médiation bootstrap Apr 05, 2024 am 03:30 AM

Comment lire les résultats du test de médiation bootstrap

Comment utiliser bootstrap pour tester l'effet de la médiation Comment utiliser bootstrap pour tester l'effet de la médiation Apr 05, 2024 am 03:57 AM

Comment utiliser bootstrap pour tester l'effet de la médiation

Quelle est la différence entre bootstrap et springboot Quelle est la différence entre bootstrap et springboot Apr 05, 2024 am 04:00 AM

Quelle est la différence entre bootstrap et springboot

Comment exporter les résultats de la commande stata de l'effet de médiation du test d'amorçage Comment exporter les résultats de la commande stata de l'effet de médiation du test d'amorçage Apr 05, 2024 am 03:39 AM

Comment exporter les résultats de la commande stata de l'effet de médiation du test d'amorçage

See all articles