Home >Web Front-end >JS Tutorial >How to perform ajax form verification in MVC+bootstrap interface

How to perform ajax form verification in MVC+bootstrap interface

php中世界最好的语言
php中世界最好的语言Original
2018-04-03 10:37:321697browse

This time I will bring you how to perform ajax on the MVC+bootstrap interfaceForm verification, what are the notes on the MVC+bootstrap interface for ajax form verification, The following is a practical case, let’s take a look.

After using bootstrap, it has its own style has-error. It will be more troublesome to use it. If you usually use jquery.validate, you can only use its own style, and there are models in useModelVerification is more convenient. How to solve it?

Of course you can write a jquery plug-in specifically for this. I think it is quite troublesome. If you like to write plug-ins, do some research.

First Nuget gets a component of MVC EditorTemplates for Bootstrap 3. With it, there will be some templates, such as a relatively simple 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>

In this way, after using EditorFor It will directly output the html required by bootstrap, which is more convenient.

We see that there is already a has-error handler for verification failure. The second question comes. We need front-end verification. Ajax verification is also acceptable. What about custom verification?

So we continue to use the model verification that comes with MVC. There is a Validation class in the component we just obtained. We first add an extension method to it for non-strong types

    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;
    }

View. Can be added:

    <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>

Finally, handle ajax submission and postback processing in the script. I don’t know if it is more convenient to use MVC’s Ajax.BeginForm, but I personally feel that this thing is not very flexible, so I continue to use ajaxSubmit. And 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();
      });
    }

We can add custom verification to it in the background Action method:

      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);

Approximate effect:

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

How to realize forward, backward and refresh of Ajax page

In-depth understanding of ajax XHR object

How to implement AJAX queue request (with code)

Ajax traverses jSon to modify and delete data

The above is the detailed content of How to perform ajax form verification in MVC+bootstrap interface. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn