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!