Heim Web-Frontend js-Tutorial Ajax-Formularvalidierung, nachdem MVC auf Bootstrap trifft

Ajax-Formularvalidierung, nachdem MVC auf Bootstrap trifft

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

In diesem Artikel wird hauptsächlich die Ajax-Formularüberprüfung nach MVC und Bootstrap vorgestellt. Es hat einen gewissen Referenzwert.

Nach der Verwendung von Bootstrap kann er es selbst tun. Wenn ein Fehler auftritt, ist die Verwendung schwieriger. Wenn Sie normalerweise jquery.validate verwenden, können Sie nur den eigenen Stil verwenden. Wenn ein Modell vorhanden ist, ist es bequemer, die Modellüberprüfung zu verwenden. Wie kann man es lösen?

Natürlich können Sie speziell dafür ein JQuery-Plug-In schreiben. Wenn Sie gerne Plug-Ins schreiben, sollten Sie etwas recherchieren.

Zuerst erhält Nuget eine Komponente von MVC EditorTemplates für Bootstrap 3. Damit gibt es einige Vorlagen, wie zum Beispiel einen relativ einfachen Text:

@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>
Nach dem Login kopieren

Auf diese Weise wird es nach der Verwendung von EditorFor Es wird Geben Sie den für Bootstrap erforderlichen HTML-Code direkt aus, was bequemer ist.

Wir sehen, dass es bereits einen Has-Error-Handler für Verifizierungsfehler gibt. Die zweite Frage ist: Wir benötigen eine Ajax-Verifizierung.

Also verwenden wir weiterhin die mit MVC gelieferte Modellüberprüfung. In der Komponente, die wir gerade erhalten haben, fügen wir zunächst eine Erweiterungsmethode für nicht stark typisierte

    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;
    }
Nach dem Login kopieren
<🎜 hinzu >Ansicht. Kann hinzugefügt werden:

    &lt;p class=&quot;form-group@(Html.ValidationError(&quot;Department&quot;, &quot; has-error&quot;))&quot;&gt;
      &lt;label class=&quot;control-label&quot; for=&quot;DepartmentId&quot;&gt;所在部门&lt;/label&gt;
      &lt;p class=&quot;controls&quot;&gt;
        &lt;span id=&quot;deptname&quot;&gt; &lt;/span&gt;&lt;a id=&quot;btnSelectDepartment&quot;&gt;选择部门&lt;/a&gt;
        &lt;input class=&quot;form-control&quot; data-val=&quot;true&quot; data-val-required=&quot;部门是必需的。&quot; id=&quot;DepartmentId&quot; name=&quot;DepartmentId&quot; type=&quot;hidden&quot; value=&quot;&quot;&gt;
        @Html.ValidationMessage(&quot;Department&quot;, null, new { @class = &quot;help-block&quot; })
      &lt;/p&gt;
    &lt;/p&gt;
Nach dem Login kopieren

Schließlich weiß ich nicht, ob es bequemer ist, Ajax.BeginForm von MVC zu verwenden, aber ich persönlich bin der Meinung, dass dies der Fall ist ist nicht sehr flexibel, daher verwende ich weiterhin ajaxSubmit und jquery.ajax:

//ready
      var $puserform = $(&quot;#puserform&quot;);
      $puserform.dialog({
        title: &#39;新建用户&#39;,//.....
      });
      $(&quot;#btnCreateUser&quot;).click(function () {
        var nodes = zTreeObjleft.getSelectedNodes();
        if (nodes.length &gt; 0) {
          CreateUserForm($puserform);
        }
      })
 
 
function CreateUserForm(form) {
      var $puserform = form;
      $.ajax({
        url: &quot;CreateUser&quot;,
        success: function (html) {
          CreateUserFormSuccessCallback(html, $puserform);
        }
      });
    }
 
    function InitSelectDepartmentWhenCreateUser() {
      $(&quot;#btnSelectDepartment&quot;).departmentSelection({
        onSelected: function (name, id) {
          $(&quot;#deptname&quot;).text(name);
          $(&quot;#DepartmentId&quot;).val(id);
        }
      });
    }
 
    function CreateUserFormSuccessCallback(html, form) {
      var $puserform = form;
      $puserform.children().children().html(html);
      $(&quot;#puserform&quot;).dialog(&quot;open&quot;);
      var $form = $puserform.find(&quot;form&quot;)
      InitSelectDepartmentWhenCreateUser();
      $form.submit(function () {
        $form.ajaxSubmit(function (data) {
          if (data == &quot;success&quot;) {
            $(&quot;#puserform&quot;).dialog(&quot;close&quot;);
            $(&quot;#puserform&quot;).clearForm();
          }
          else {
            CreateUserFormSuccessCallback(data, form);
          }
        });
        event.preventDefault();
      });
    }
Nach dem Login kopieren

In der Hintergrundaktionsmethode können wir eine benutzerdefinierte Überprüfung dafür hinzufügen:

      if (!DepartmentId.HasValue)
      {
        ModelState.AddModelError(&quot;Department&quot;, &quot;必须选择部门&quot;);
      }
 
      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(&quot;success&quot;);
      }
 
      return View(user);
Nach dem Login kopieren
Der ungefähre Effekt:

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Implementierung der AJAX-Anforderungswarteschlange

Eine Zusammenfassung mehrerer Methoden zum asynchronen Senden von Formularen mithilfe von Ajax

So lösen Sie das Problem von Arrays in AJAX-Anfragen

Das obige ist der detaillierte Inhalt vonAjax-Formularvalidierung, nachdem MVC auf Bootstrap trifft. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie Bootstrap in Eclipse ein So führen Sie Bootstrap in Eclipse ein Apr 05, 2024 am 02:30 AM

So führen Sie Bootstrap in Eclipse ein

So führen Sie eine Idee in Bootstrap ein So führen Sie eine Idee in Bootstrap ein Apr 05, 2024 am 02:33 AM

So führen Sie eine Idee in Bootstrap ein

So lesen Sie die Ergebnisse des Bootstrap-Mediation-Effekt-Tests in Stata So lesen Sie die Ergebnisse des Bootstrap-Mediation-Effekt-Tests in Stata Apr 05, 2024 am 01:48 AM

So lesen Sie die Ergebnisse des Bootstrap-Mediation-Effekt-Tests in Stata

Nach 750.000 Runden Einzelkampf zwischen großen Modellen gewann GPT-4 die Meisterschaft und Llama 3 belegte den fünften Platz Nach 750.000 Runden Einzelkampf zwischen großen Modellen gewann GPT-4 die Meisterschaft und Llama 3 belegte den fünften Platz Apr 23, 2024 pm 03:28 PM

Nach 750.000 Runden Einzelkampf zwischen großen Modellen gewann GPT-4 die Meisterschaft und Llama 3 belegte den fünften Platz

So lesen Sie die Ergebnisse des Bootstrap-Mediation-Tests So lesen Sie die Ergebnisse des Bootstrap-Mediation-Tests Apr 05, 2024 am 03:30 AM

So lesen Sie die Ergebnisse des Bootstrap-Mediation-Tests

So verwenden Sie Bootstrap, um den Mediationseffekt zu testen So verwenden Sie Bootstrap, um den Mediationseffekt zu testen Apr 05, 2024 am 03:57 AM

So verwenden Sie Bootstrap, um den Mediationseffekt zu testen

Was ist der Unterschied zwischen Bootstrap und Springboot? Was ist der Unterschied zwischen Bootstrap und Springboot? Apr 05, 2024 am 04:00 AM

Was ist der Unterschied zwischen Bootstrap und Springboot?

So exportieren Sie die Ergebnisse des Befehls Bootstrap Test Mediation Effect Stata So exportieren Sie die Ergebnisse des Befehls Bootstrap Test Mediation Effect Stata Apr 05, 2024 am 03:39 AM

So exportieren Sie die Ergebnisse des Befehls Bootstrap Test Mediation Effect Stata

See all articles