【问题标题】:validation of form with Jquery within asp.net mvc4 application在 asp.net mvc4 应用程序中使用 Jquery 验证表单
【发布时间】:2013-10-25 15:21:27
【问题描述】:

我是Jqueryasp MVC4 的初学者 我使用 Jquery 验证插件

 <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js" type="text/javascript">

代码

<script>
      jQuery(document).ready(function() {
          jQuery("#monFormulaire").validate({
              rules: {
                  "reclamation": {
                      "required": true,
                      "minlength": 4,
                      "maxlength": 60000
                  },
                  "cause": {
                      "required": true,
                      "minlength": 4,
                      "maxlength": 60000
                  },

                  "curative": {
                      "required": true,
                      "minlength": 4,
                      "maxlength": 60000
                  },

                  "Closing_date": {
                      "required": true,
                      "minlength": 1,
                      "maxlength": 60000
                  }
              },
              submitHandler: function (form) { /* envoyer Mail*/
                  mailJob();
              }
          });
      });

        <button type="submit" value="Page5" name="btnPage1" style="margin-left:1%" class="backRow" ></button>

  <table border="1"  class="mytab" style="margin: auto;">
      formulaire .
 </table>

</form>

验证以正确的方式运行,但未调用服务器端的 Action 有人有什么想法吗???

【问题讨论】:

  • 我们需要查看您的代码来诊断问题。
  • 在您通过客户端验证之前,不会调用服务器端的操作。
  • 客户端验证工作正常 submitHandler: function (form) { /* envoyer Mail*/ mailJob(); } 这个函数被调用,但只有服务器端没有被调用
  • @slatniawadii 当您正确填写表单并通过客户端验证时,会发生什么?
  • 没什么,但是当我删除验证脚本时一切正常,我认为这可能是这个坏插件的问题,我会尝试开发自己的

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


【解决方案1】:

在您通过客户端验证之前,不会调用服务器端的操作

【讨论】:

  • 是的,我知道我很抱歉没有给你很多细节,因为这不是我的代码我只是尝试修复它,它充满了错误,但是当我移动这个代码时,这个代码都运行良好 submitHandler : function (form) { /* envoyer Mail*/ mailJob();如果表单有效,我添加它只是为了运行 javascript 函数
【解决方案2】:

你的

节点定义是什么?

您是否定义了目标、方法(get/post)?

注意:有时,如果您在表单中发送奇怪的数据(如代码、SQL 等),您可能还需要禁用请求验证。为此,请将 validateRequest="false" 放在 ASPX 文件中的页面定义中:

validateRequest="false" [...] %>

注意 2:如果不是答案,请不要忘记删除 validateRequest="false" - 它可能会给您带来安全问题。

【讨论】:

  • 谢谢你回答我是的,我只是放了一点我的代码,因为 satckoverflow 不允许发布很多代码,当我删除这部分代码时,所有代码都运行良好 submitHandler: function (form ) { /* 特使邮件*/ mailJob(); }
  • 这是一个在调用服务器端之前验证表单之后运行的函数
【解决方案3】:

禁用您的客户端验证,并确保当您的表单被提交时,它会在您的控制器上调用带有 HttpPost 属性的操作。

[HttpPost]
public ActionResult YourAction()

一旦这工作正常,重新启用您的客户端验证并添加

@Html.ValidationSummary(false)

如果您可以使用Chrome Dev Tools: Networking and the Console 检查您的流量,也会有所帮助。

编辑:在 mailJob() 函数的末尾添加 form.submit();。您的初始表单提交已被 submitHandler 使用,不再适用于您的表单。

【讨论】:

  • 谢谢你 rachid 就像我一开始说的我是初学者,我发现问题在 submitHandler: function (form) { /* envoyer Mail*/ mailJob();我想在我的表单有效时执行这个函数
  • 这个方法带来的问题 submitHandler: function (form) { /* envoyer Mail*/ mailJob(); } 当我删除它时它工作正常
  • 请注释掉mailJob(); /*mailJob();*/ 如果您的代码有效,则表示您的 mailJob() 函数有问题。如果您也可以列出该代码的代码,那将会很有帮助。
  • 您的代码中是否定义了mailJob() 函数?
  • 是的,它工作正常,但它阻止了操作方法被执行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多