ModelState.IsValid 在视图上访问时始终为真
ModelState.IsValid always true when accessed on View
通过遵循 this 我得到了 ModelState.IsValid
ins jquery 代码。但它总是正确的,我可以在我的页面上看到错误。
我想要实现的是在提交表单时显示加载。我使用了 onclick
提交事件。即使页面上存在验证错误,它也会显示加载。在这种情况下,我不想显示加载。我也尝试使用 Form
的 Submit
事件,但结果相同。
我的 ViewModel
正在 DataAnnotations
进行验证,表单处于局部视图中。有什么建议可以成功实现此加载消息吗?
这是我的表格
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @id = "frmFlightSearch", onsubmit = "CheckModalErros()" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
......
<div class="row" style="margin-bottom:10px;margin-top:10px;">
<div class="col-lg-3 pull-right">
<div class="form-group-sm">
<button id="btnSubmit" type="submit" class="btn btn-sm btn-primary pull-right">
Search Flights
<span class="glyphicon glyphicon-plane"></span>
</button>
</div>
</div>
</div>
}
如果您使用 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.
}
It shows loading even if there are validation errors on page. I don't want show loading in this case.
添加此事件处理程序:
$("#frmFlightSearch").bind("invalid-form.validate", function () {
// hide 'loading'
});
这将在您的客户端验证失败时触发,您可以隐藏您为 'loading' 进度显示的内容。
如果客户端验证失败,则无论如何都不会 post(使用 asp.net mvc + jquery 验证)。
通过遵循 this 我得到了 ModelState.IsValid
ins jquery 代码。但它总是正确的,我可以在我的页面上看到错误。
我想要实现的是在提交表单时显示加载。我使用了 onclick
提交事件。即使页面上存在验证错误,它也会显示加载。在这种情况下,我不想显示加载。我也尝试使用 Form
的 Submit
事件,但结果相同。
我的 ViewModel
正在 DataAnnotations
进行验证,表单处于局部视图中。有什么建议可以成功实现此加载消息吗?
这是我的表格
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @id = "frmFlightSearch", onsubmit = "CheckModalErros()" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
......
<div class="row" style="margin-bottom:10px;margin-top:10px;">
<div class="col-lg-3 pull-right">
<div class="form-group-sm">
<button id="btnSubmit" type="submit" class="btn btn-sm btn-primary pull-right">
Search Flights
<span class="glyphicon glyphicon-plane"></span>
</button>
</div>
</div>
</div>
}
如果您使用 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.
}
It shows loading even if there are validation errors on page. I don't want show loading in this case.
添加此事件处理程序:
$("#frmFlightSearch").bind("invalid-form.validate", function () {
// hide 'loading'
});
这将在您的客户端验证失败时触发,您可以隐藏您为 'loading' 进度显示的内容。
如果客户端验证失败,则无论如何都不会 post(使用 asp.net mvc + jquery 验证)。