在View上访问时,ModelState.IsValid始终为true

时间:2015-06-02 13:02:19

标签: jquery asp.net-mvc unobtrusive-validation

通过关注this,我得到了ModelState.IsValid ins jquery代码。但它总是如此,我可以在我的页面上看到错误。 我想要实现的是在提交表单时显示加载。我使用了onclick提交事件。即使页面上存在验证错误,它也会显示加载。我不想在这种情况下显示加载。我也尝试使用Form的{​​{1}}事件但结果相同。

我的Submit正在使用ViewModel进行验证,表单处于局部视图中。任何建议如何成功实现此加载消息?

这是我的表格

DataAnnotations

2 个答案:

答案 0 :(得分:3)

  

即使页面上存在验证错误,也会显示加载。在这种情况下,我不想要节目加载。

添加此事件处理程序:

$("#frmFlightSearch").bind("invalid-form.validate", function () {
    // hide 'loading' 
});

这会在您的客户端验证失败时触发,并且您可以隐藏您为了“加载”而显示的内容。进展。

如果客户端验证失败,那么它无论如何都不会发布(使用asp.net mvc + jquery验证)。

答案 1 :(得分:0)

如果您使用部分视图使用ajax调用加载表单,则成功回调执行以下操作:

$.ajax({
     success: function(data){
                 $('#DivId').html(data);
                 $.validator.unobtrusive.parse($("#FormId"));
             }
});

这将解析您的表单的验证,当您单击提交并且模型无效时,您的表单将显示验证消息。

希望得到这个帮助。

编辑:

正如您在点击时所说,您需要检查以下代码行:

if($('#FormId).Valid())
{
   $('#Loader').show(); //show loader if form is valid.
}
else
{
   e.preventDefault(); // prevent default event if form is not valid.
}