使用jQuery Validate验证并执行AJAX调用以返回部分视图

时间:2013-03-20 08:48:36

标签: jquery asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在使用ASP.NET MVC 4jQuery Validate

我的页面上有一个文本框和一个按钮。这是一个按钮,提交按钮。单击该按钮时,我会验证输入到文本框中的数字,并显示2个部分视图中的1个。

这是我的HTML标记:

@Html.TextBoxFor(x => x.ChangeIncidentNumber)
<button id="verifyButton" type="button">Verify</button>
@Html.ValidationMessageFor(x => x.ChangeIncidentNumber)

在我开始使用jQuery Validate之前,我这样做了:

$(document).ready(function () {
     $('#verifyButton').click(function () {
          $.ajax(
          {
               type: "POST",
               url: "/Server/GetChangeIncidentDetails",
               data: { changeIncidentNumber: $('#ChangeIncidentNumber').val() },
               dataType: "html",
               success: function (result) {
                    var domElement = $(result);
                    $("#changeIncidentDetails").html(domElement);
               }
          });
     });
});

我的GetChangeIncidentDetails操作方法:

public ActionResult GetChangeIncidentDetails(string changeIncidentNumber)
{
     ImplementationType implementationType = GetImplementationType(changeIncidentNumber);

     try
     {
          if (implementationType == ImplementationType.Change)
          {
               Change change = changeService.FindChangeByNumber(changeIncidentNumber);
               if (change != null)
               {
                    ChangeViewModel viewModel = Mapper.Map<ChangeViewModel>(change);

                    return PartialView("ChangeInformation", viewModel);
               }
               else
               {
                    // If it is null then I want to display an error message on the front end
               }
          }
          else if (implementationType == ImplementationType.Incident)
          {
               // Code is almost similar as above
          }
          else
          {
          }
     }
     catch (Exception ex)
     {
          // Handle error
     }
}

在我进入上面的action方法之前,我在图片中添加了jQuery Validate来处理一些客户端验证。这就是我目前所拥有的:

$(document).ready(function () {
     $("#searchForm").validate({
          rules: {
               ChangeIncidentNumber: "required"
          },
          messages: {
               ChangeIncidentNumber: "Required"
          }
     });

     $('#verifyButton').click(function () {
          $('#searchForm').valid();
     });
});

我不确定如何将2合并在一起,验证和ajax调用是否可以一起完成,是否需要将其分开,如何显示客户端错误消息if change == null

1 个答案:

答案 0 :(得分:1)

我相信你可以做到:

  $('#verifyButton').click(function () {
          $('#searchForm').validate();

          if($('#searchForm').valid()){    
              $.ajax({
                   type: "POST",
                   url: "/Server/GetChangeIncidentDetails",
                   data: { changeIncidentNumber: $('#ChangeIncidentNumber').val() },
                   dataType: "html",
                   success: function (result) {
                       var domElement = $(result);
                       $("#changeIncidentDetails").html(domElement);
                       }
              });
          }
     });

注意我没有检查语法可能有额外或缺少}或)

要返回错误,您可以从动作方法返回一个类似于

的json对象
{success:true/false, 
 data:"jsondatafromactionmethod",
 error:"errormessagehere"}

如果成功,则执行html替换/插入,否则以任何方式显示错误。