我正在使用ASP.NET MVC 4开发一个网站,我有以下问题。我正在尝试在服务器处理时显示加载图像。当我在填写表格时没有犯任何错误时,它实际上工作正常。但是,当我错过了一个必填字段时,加载图像会弹出并且不会消失,并且会对字段进行验证。 我试过用jQuery做这样的事情
$(function () {
$("#button").click(function () {
alert(form.valid());
if (form.valid()) {
$("#divLoading").show();
$.post({
type: 'POST',
url: url,
data: data,
success: function (data) {
$("#divLoading").hide();
}
});
} else {
alert("Not valid.");
}
//}
});
});
因此,当我询问表单是否有效时,它返回true,尽管将所需字段留空。
我的模型如下:
public class MotivoDTO
{
public MotivoDTO()
{
}
[Required(ErrorMessage = "You must enter a Motive.")]
[DataType(DataType.Text)]
[Display(Name = "Descripcion")]
public string Descripcion { get; set; }
}
谢谢! (...对不起我的英语)
答案 0 :(得分:0)
首先尝试验证表单:
form.validate();
if (form.valid()) {
我认为该表单是您要提交的表单的jquery对象。
答案 1 :(得分:0)
在您的应用程序中启用不显眼的验证。现在发生的事情是你在服务器上验证是好的。但是这样做是为了启用进度控制,但如果存在验证错误,则永远不会将其关闭。不显眼的验证将允许您在客户端进行验证。如果要将divLoading show放在if语句之外,可以在else语句中添加hide命令。
答案 2 :(得分:0)
无论post方法的结果如何,确保隐藏加载div也是一个好主意。 jquery.post
例如:
$.post({
type: 'POST',
url: url,
data: data,
success: function (data) {
$("#divLoading").hide();
}
}).always(function() { $("#divLoading").hide(); });
答案 3 :(得分:0)
更新你的.ajax()调用,以利用ajax()函数内可用的不同事件。
$(function () {
$("#button").click(function () {
alert(form.valid());
if (form.valid()) {
$.post({
type: 'POST',
url: url,
data: data,
//do this before you start the POST method
beforeSend: function(){
$("#divLoading").show();
},
//do this regardless if it was successful or not
complete: function (data) {
$("#divLoading").hide();
}
});
} else {
alert("Not valid.");
}
}