2

我正在尝试使用DataAnnotations.

问题是当我检查表单在 javascript 中是否有效时,它总是返回 true,即使表单不符合要求。

这是始终返回 true 的行:var valid = $("#create-language-form").valid();

在我的模型中,我得到了这个:

    [Required(ErrorMessage="Please enter a name")]
    public string Name { get; set; }

在我看来,我得到了这个:

@using(Html.BeginForm(null, null, FormMethod.Post, new { id = "create-language-form" }))
{
<div class="editor-label">
    @Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>
}

在我的javascript中,我得到了这个:

$("#create-language-dialog").dialog({
        modal: true,
        open: function (event, ui) {
            $('#create-language-dialog').load("/Languages/CreatePartial", { id: objectid });
        },
        buttons: {
            "Save": function () {
                var valid = $("#create-language-form").valid();

                if (valid) {
                 //do stuff
                }
            }
        }
    });

可能有什么问题?为了让 MVC 验证在部分视图中工作,我错过了什么?

4

2 回答 2

2

这将验证表单并返回 true 或 false。

var valid = $("#create-language-form").validate().form();
于 2011-09-22T12:22:24.673 回答
0

我有类似的问题,我编写了自己的函数如下

function isFormValid() {
    var valid = true;

    $(".field-validation-error").each(function () {
        if ($(this).attr("data-valmsg-for") == "Name") {
            valid = false;
        }
    });

    return valid;
}

这将检查与ValidationMessageFor错误相对应的元素。我的页面有多个表单,我希望它只适用于表单上的几个字段,所以我添加了 if 条件data-valmsg-for。如果您有一个表格并想检查是否有任何字段有误,那么您可以如下所示

function isFormValid() {
    var valid = true;

    $(".field-validation-error").each(function () {
        valid = false;
    });

    return valid;
}
于 2011-10-25T10:48:14.913 回答