客户端validation无效

我实现了客户端validation,即ModelHTML指定的Required attributesValidationMesssage用于.cshtml并引用了JQueryvalidation器,当我点击“ save button时工作正常。 但是当我实现按钮的onClick event和ajax调用时,validation似乎无法正常工作。 我尝试使用IsValid但没有运气。

请找到以下代码。

调节器

  [HttpPost] public ActionResult AddClient(ClientModel clientData) { var clientObj = new Metadata.Client.Service.Client(); string successMessage = string.Empty; clientObj.ClientType = new Metadata.Client.Service.ClientType(); clientObj.ClientName = clientData.Client.ClientName; clientObj.ClientCode = clientData.Client.ClientCode; clientObj.ClientType.ClientTypeId = clientData.ClientTypeSelectId; try { clientObj = clientData.AddNewClient(clientObj); } catch (Exception ex) { return new ContentResult { Content = ex.Message, ContentType = "application/json" }; } return new ContentResult { Content = successMessage, ContentType = "application/json" }; //return RedirectToAction("Index"); } 

JQuery – 添加了以下引用。

     $("#addForm").validate( { submitHandler: function (form) { var clientName = $('#Client_ClientName').val(); var clientTypeId = $('#ClientTypeSelectId').val(); var clientCode = $('#Client_ClientCode').val(); $.ajax({ type: "POST", async: false, url: "/Client/AddClient", cache: false, data: { "clientName": clientName, "clientTypeId": clientTypeId, "clientCode": clientCode }, dataType: "json", error: function (request) { alert(request.responseText); }, success: function (result) { //alert('Successfully Inserted Client'); $.ajax({ url: "/Client/ClientGrid", type: 'GET', datatype: 'json', success: function (data) { $('#grid').html(data); //alert('got here with data'); }, error: function () { //alert('something bad happened'); } }); $('#myClientDialogContainer').dialog('close'); } }); return false; } }); 

模型

  public class Client { public int ClientId { get; set; } [Required(ErrorMessage = "Please Enter Client Name")] [Display(Name = "Client Name")] public string ClientName { get; set; } public ClientType ClientType { get; set; } public StatusType StatusType { get; set; } //[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [Required(ErrorMessage = "Please Enter Client Code")] [DataType(DataType.Text)] [Display(Name = "Client Code")] public string ClientCode { get; set; } //[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Text)] [Display(Name = "Client Status Type Name")] public string ClientStatusTypeName { get; set; } //[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Text)] [Display(Name = "Client Status Code Name")] public string ClientStatusCodeName { get; set; } [Display(Name = "Client Type Id")] public int ClientTypeId { get; set; } } 

validation码

 
@Html.ValidationMessageFor(c => c.Client.ClientName)
@Html.LabelFor(c => c.Client.ClientName, "Client Name :") @Html.TextBoxFor(c => c.Client.ClientName, new { style = "width:50%; height:20px;" })
@Html.ValidationMessageFor(m => m.ClientTypeSelectId)
@Html.LabelFor(m => Model.Client.ClientType.ClientTypeName, "Client Type :") @Html.DropDownListFor(m => m.ClientTypeSelectId, (SelectList)ViewBag.clientTypeListCombo, " ", new { style = "width:52%" })
@Html.ValidationMessageFor(m => m.Client.ClientCode)
@Html.LabelFor(m => m.Client.ClientCode, "Client Code :") @Html.TextBoxFor(m => m.Client.ClientCode, new { style = "width:50%; height:20px;" })

请任何人都可以帮忙。

单击按钮时,请尝试.submit()事件,而不是在单击按钮时提交表单。 将输入元素包装在html表单标记内。 您应该序列化表单并将其提交给服务器,而不是逐个获取输入值。

 $('#myForm').submit(function (e) { // Prevent default submit for ajax e.preventDefault(); $.ajax({ /* Your ajax stuff goes here */ }); }); 

这样您就不会绕过validation。