使用jquery AJAX调用时无法调用MVC4客户端验证

时间:2014-06-24 11:43:34

标签: jquery ajax asp.net-mvc asp.net-mvc-4 asp.net-mvc-validation

在我的MVC视图屏幕中,点击按钮,我通过$.ajax进行ajax调用,并且能够调用控制器的操作方法并将响应返回到成功事件。 controller action方法的返回类型为JsonResult并返回Json(object,AllowGEt) 我在_layout文件中包含了jquery文件和验证文件。

问题: 问题无法在客户端激活验证。

我已经在模型对象中包含了 - Required注释和错误消息注释。

请指导我出了什么问题。 (它在BeginForm内进行验证时工作正常,按钮为Submit按钮,并且调用操作方法,返回类型为ActionResult,但没有调用ajax。)

修改为包含代码:

View按钮点击事件:

      <script type="text/javascript">
     $("#btnJsonSubmit").click(function () {
      var f = JSON.stringify(
           { 'IDValue': objIDValue };
     $.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: 'POST',
        url: '/cPreferences/InsertPreference',
        data: f,
        success: function () {
            alert('Record saved successfully.');
            $('select').prop('selectedIndex', 0);
        },
        failure: function (response) {
            alert('f');
            //console.log('error!!');
        }
        });
     });
   </script>

On Controller的actio方法:

   [HttpPost]
    public JsonResult InsertPreference(string IDValue)
    {

       ///code to call services
      return Json(l, JsonRequestBehavior.AllowGet);
     }

查看模型对象

查看MOdel

    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    namespace ViewModel
   {
     public class CampusProgramPreferencesViewModel
     {
      [Required(ErrorMessage = "Selection is required")]
     public IList<LookupItem> DataList { get; set; }
     [Required(ErrorMessage = "Preference is required")]

    public string Preference { get; set; }
    }
     }


  Layout_cshtml

        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"   type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"   type="text/javascript"></script>
        <script src="@Url.Content("~/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:0)

请确保您已包含以下内容:

1)Web配置更改:

**

<appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>

**

2)脚本文件的顺序,即:

**

<script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'></script>
<script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>

**

您还可以参考: Use ASP.NET MVC validation with jquery ajax?