由于必填字段,加载的图像无法在MVC上运行

时间:2014-09-19 20:16:06

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

我正在使用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; }

    }

谢谢! (...对不起我的英语)

4 个答案:

答案 0 :(得分:0)

首先尝试验证表单:

form.validate();
if (form.valid()) {

我认为该表单是您要提交的表单的jquery对象。

答案 1 :(得分:0)

在您的应用程序中启用不显眼的验证。现在发生的事情是你在服务器上验证是好的。但是这样做是为了启用进度控制,但如果存在验证错误,则永远不会将其关闭。不显眼的验证将允许您在客户端进行验证。如果要将divLoading show放在if语句之外,可以在else语句中添加hide命令。

Unobstrusive Validation

答案 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.");
    }
 }