2017-10-06 78 views
1

jQuery表单验证程序可以与Html.Beginform一起正常工作。在MVC中使用Ajax.BeginForm的onBegin方法中的jQuery表单验证程序

我将Html.Beginform更改为Ajax.Beginform以提交没有刷新的表单(尝试Ajax post但是文件在控制器中为null)。

更改为Ajax.Beginform后,jQuery表单验证程序不起作用。

是否可以在Ajax.Beginform的onBegin方法内使用jQuery表单验证器?

查看:

<script src="~/scripts/jquery-1.10.2.min.js"></script> 
<script src="~/scripts/jquery.validate.min.js"></script> 
<script src="~/scripts/jquery.validate.unobtrusive.js"></script> 
<script src="~/scripts/jquery.unobtrusive-ajax.min.js"></script> 

@using (Ajax.BeginForm("Index", "Home", new AjaxOptions { OnSuccess = "Success", OnFailure = "Failure", OnBegin = "validate", HttpMethod = "post" }, new { @Id = "form", enctype = "multipart/form-data" })) 
{ 
<script> 
    function Success(data) { 
     alert(data); 
    } 
    function Failure() { 
     alert("failure"); 
    } 
    function validate() { 
     $(document).ready(function() { 
      $("#form").validate({ 
       rules: { 
        text1: { 
         required: true, 
        }, 
        text2: { 
         required: true, 

        } 
       }, 
       messages: { 
        text1: { 
         required: "enter text1" 
        }, 
        text2: { 
         required: "enter text2" 
        }, 
       } 

      }); 
      if ($("#form").valid()) { 
       return true; 
      } 
      else { 
       return false; 
      } 
     }); 

    } 
</script> 

<div> 
    <input type="text" id="text" name="text" /> 
</div> 
<div> 
    <input type="text" id="text1" name="text1" /> 
</div> 
<div> 
    <input type="submit" id="submit" name="submit" /> 
</div> 

} 

控制器:

public class HomeController : Controller 
    { 
     // GET: Home 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     [HttpPost] 
     public ActionResult Index(FormCollection formcollection) 
     { 
      return Json("1"); 
     } 
    } 
+0

是的,它是可能的,但你必须向我们展示一些代码 – GGO

+0

现在检查@GGO ......如果我使用jQuery的内部验证onBegin函数抛出下面的错误。 – Yashas

+0

0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'验证' – Yashas

回答

0

Firstable您包括jQuery的unobstrusive尚未验证。您可以在输入上使用data-val html属性来自动验证字段,并且您的代码更具可读性。尝试查看关于不可忽视验证的文档。

您的问题是拨打Ajax.BeginForm。请参阅visual studio自动完成以检查方法参数。它缺少一个参数,你必须把nullrouteValues参数,像:

@using (Ajax.BeginForm("Index", "Home", null, new AjaxOptions { OnSuccess = "Success", OnFailure = "Failure", OnBegin = "validate", HttpMethod = "post" }, new { @Id = "form", enctype = "multipart/form-data" })) 
+0

嗨@ggo ...现在我可以验证,也能够提交...现在又一个新问题是,如果我添加文件输入它在表单集合,模型和在httppostedfilebase中为空... – Yashas

+0

如果我的答案解决初始问题,请检查并用绿色勾号关闭此主题。如果您还有其他问题,例如您的文件输入,则必须使用相关代码制作另一个主题。谢谢 – GGO

相关问题