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 に答える