Отобразить ненавязчивую валидацию MVC3: основные ошибки в диалоге пользовательского интерфейса jQuery - PullRequest
4 голосов
/ 14 июня 2011

Я хочу отобразить ненавязчивые ошибки MVC3 ValidationSummary в диалоге пользовательского интерфейса jQuery.В частности, я хочу иметь возможность «живого» * ​​1001 * -подобного опыта.То есть всякий раз, когда проверка на стороне клиента MVC3 будет показывать (впервые) или обновлять (при повторных нарушениях) элемент .validation-summary-errors, я хочу, чтобы результаты отображались в диалоге пользовательского интерфейса jQuery.

В настоящее время у меня есть что-то вроде

@Using Html.BeginForm("Action", "Controller", FormMethod.Post, New With {.id = "MyForm"})
    @Html.ValidationSummary()
...

$('#MyForm').submit(function () {
    if (!$(this).valid()) {
        $('.validation-summary-errors').dialog(...);
        return false;
    }
});

, но мне это не кажется правильным.

Такое чувство, что я должен быть в состоянии подключиться к структуре проверки и получить уведомление о том, чтопроверка завершилась, и появилась сводка ошибок, которая теперь отображается или обновляется с ошибками.Затем, используя это событие, dialog() отображаемый / обновленный элемент .validation-summary-errors.Что-то подобное существует?Или есть другие предложения?

Ответы [ 2 ]

12 голосов
/ 30 июня 2011

Так вот как я это сделал.Я не нашел много документации, но сделал достаточно копаний JS, чтобы добраться до этой точки.Не уверен, что я чувствую по этому поводу.Я действительно знаю, что мне больше не нужно подключать событие формы submit и «удваивать» вызовы проверки, так что это хорошо.Просто кажется, что это решение кажется «загадочным» (по крайней мере, в моих неопытных глазах), и я ожидал (и все еще ищу) решение, которое кажется более запутанным.

1 голос
/ 29 марта 2014

Если кто-то хочет отобразить оба значения ValidationSummary & ValidationSummaryDialog, попробуйте это.

согласно @ ckittel.

@using (Html.BeginForm())
{ 
    @Html.ValidationSummary()
    <div id="ValidationSummary" style="display:none" class="validation-summary-errors">
    </div>
}


<script type="text/javascript">

    function showValidationSummaryDialog() {
        $('#ValidationSummary').html($('.validation-summary-errors').html());

        $('#ValidationSummary').dialog({
            title: 'Error',
            modal: true
        });
    }

    $(document).ready(function () {
        $('form').bind('invalid-form.validate', function (error, element) {
            showValidationSummaryDialog();
        });
    });

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...