MVC 3局部视图验证问题

时间:2011-09-22 09:40:14

标签: jquery model-view-controller asp.net-mvc-3 validation asp.net-mvc-validation

我正在尝试使用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验证在局部视图中工作的任何东西?

2 个答案:

答案 0 :(得分:2)

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

var valid = $("#create-language-form").validate().form();

答案 1 :(得分:0)

我有类似的问题,我编写了自己的功能,如下所示

function isFormValid() {
    var valid = true;

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

    return valid;
}

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

function isFormValid() {
    var valid = true;

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

    return valid;
}