Проблема проверки частичного представления MVC 3 - PullRequest
2 голосов
/ 22 сентября 2011

Я пытаюсь проверить форму в частичном представлении, используя 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 ]

2 голосов
/ 22 сентября 2011

Это подтвердит форму и вернет true или false.

var valid = $("#create-language-form").validate().form();
0 голосов
/ 25 октября 2011

У меня была похожая проблема, и я написал свою собственную функцию, как показано ниже

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;
}
...