Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在验证后执行ASP.Net MVC Ajax.ActionLink?_Ajax_Asp.net Mvc 3_Validation_Actionlink - Fatal编程技术网

如何仅在验证后执行ASP.Net MVC Ajax.ActionLink?

如何仅在验证后执行ASP.Net MVC Ajax.ActionLink?,ajax,asp.net-mvc-3,validation,actionlink,Ajax,Asp.net Mvc 3,Validation,Actionlink,NETMVC3.0项目 我的页面中有一个表单和一个Ajax.ActionLink,它向当前表单中添加了另一组字段,这是一个重复的过程,只要用户不断单击ActionLink,它就会不断向表单中添加越来越多的字段 这是我的Ajax操作链接 @Ajax.ActionLink("Add Another ERx", "ERxView", "Medication", new AjaxOptions { UpdateTargetId = "accordion", InsertionMode = Inserti

NETMVC3.0项目

我的页面中有一个表单和一个Ajax.ActionLink,它向当前表单中添加了另一组字段,这是一个重复的过程,只要用户不断单击ActionLink,它就会不断向表单中添加越来越多的字段

这是我的Ajax操作链接

@Ajax.ActionLink("Add Another ERx", "ERxView", "Medication", new AjaxOptions
{
UpdateTargetId = "accordion",
InsertionMode = InsertionMode.InsertAfter,
HttpMethod = "POST",
OnBegin = "destroyAccordion",
OnSuccess = "createAccordion"
}, new { @class = "standard button", id = "AnotherErx", onclick =  "document.ERxForm.submit();"})
我的问题是

当用户单击链接时,它应该首先验证当前表单中所有必需的字段,在成功验证后,它应该将新的字段集附加到表单中

我在我的Ajax.ActionLink中尝试了类似的方法,以在单击ActionLink时验证当前表单

onclick =  "document.ERxForm.submit();"
这将触发表单验证,但不管验证如何,它都会继续向表单添加新的字段集

谁能帮我,我怎么能做到这一点


感谢所有花时间阅读我的问题的人。

问题很可能是您正在添加要验证的新元素。如果通过AJAX添加新的验证元素,则需要清除并重新解析页面上的所有验证属性,如下所示:

$("form").removeData("validator"); 
$("form").removeData("unobtrusiveValidation"); 
$.validator.unobtrusive.parse("form"); 
将此添加到您的
OnSuccess
函数中,验证将适用于页面上的所有元素,包括原始元素和添加元素

OnBegin = "destroyAccordion"
使函数调用验证函数并返回true或fals。
如果为真,则执行操作链接

你的回答在一定程度上帮助了我。但是,如何确保在验证为真之前不会调用控制器操作?我错过了您正在作为ActionLink的一部分进行提交的消息。为什么?提交会干扰验证过程。我建议从ActionLink中删除
onclick
事件,因为我看不出它有什么用途。这肯定会把验证过程搞砸。