在jQuery中使用e.preventDefault()不会让[required] MVC工作

时间:2017-07-19 13:18:54

标签: javascript c# jquery asp.net-mvc

我确实创建了一个带有ViewModel的MVC C#应用程序,其所有属性都是[必需]并且还创建了它的应用View,我的问题是我需要从提交按钮捕获click事件以便制作一些验证所以我决定使用jQuery以这种方式捕获click事件:

 $("#IngresarInfo").click(function (e) {
            e.preventDefault();
            $("#idISSSBuscar").rules("remove", "required");
            $.ajax({ ... some code here

但如果我使用e.preventDefault();验证[required]确实有效(没有显示任何错误消息),我想要的是首先验证所有表单输入是否已完成,然后进行验证

你可以告诉我我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

是的,当调用e.PreventDefault()时,默认进程将停止。即,默认情况下不会调用您的服务器端控制器操作。

来自jQuery文档

  

如果调用此方法,则事件的默认操作不会   触发。

如果您想在调用e.PreventDefault后继续执行控制器操作,则需要自己提交表单。

另一个问题。为什么这样呢?如果您让MVC对viewmodel进行默认验证,则可以在post操作中查找Model.IsValid并返回包含验证错误的原始视图。

看起来你正试图模仿这种确切的行为,但我不知道你从中获得了什么。