【问题标题】:Unable to call MVC4 client side validation while using jquery AJAX call使用 jquery AJAX 调用时无法调用 MVC4 客户端验证
【发布时间】:2014-08-14 15:55:38
【问题描述】:

在我的 MVC 视图屏幕中,单击按钮时,我通过 $.ajax 进行 ajax 调用,它能够调用控制器的操作方法并将响应返回到成功事件中。 控制器操作方法的返回类型为 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>

关于Controller的action方法:

   [HttpPost]
    public JsonResult InsertPreference(string IDValue)
    {

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

查看模型对象

查看模型

    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>

【问题讨论】:

  • 请添加您有问题的视图和操作代码
  • 请使用详细代码查找更新的问题。
  • 我测试了你的代码。它是正确的并且有效。检查你的浏览器控制台是否有 java 脚本错误

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


【解决方案1】:

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

1) 网络配置更改:

**

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

【讨论】:

  • 我的控制器的操作是JSONRESULT。更新了问题的详细信息,请指导,它不起作用。 web.config 已经包含这两行。
  • 请使用 Ajax.Begin 表单,因为您的页面上似乎没有呈现表单标签,如果您将页面对象包装在表单标签中,b'coz MVC 验证可能会起作用。跨度>
猜你喜欢
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多