MVC 3 Проверка на стороне клиента в диалоговом окне jQuery - PullRequest
3 голосов
/ 14 октября 2011

Я показываю много форм, используя диалог jquery, и я хочу добавить в него проверку на стороне клиента.Я прочитал несколько примеров, сказав, что mvc 3 уже каким-то образом поддерживает проверку на стороне клиента jquery, но я попытался включить необходимый сценарий и мою форму следующим образом:

 @using (Html.BeginForm("CreateFood", "Home", FormMethod.Post, new { id = "formData" }))
       {
           @Html.ValidationSummary(false, "Please fix these errors.")

Когда я пытаюсь отправить свою форму безЗаполните обязательные поля, я все еще не получаю никаких сообщений.Может кто-нибудь дать мне больше идей / объяснений / примеров по этому вопросу?

Действительно нужна помощь здесь ... Спасибо ...

ОБНОВЛЕНИЕ (добавьте в скрипт для моего диалога)

 $createdialog.dialog("option", "buttons", {
        "Cancel": function () {
            //alert('Cancel');
            $createdialog.dialog('close');

        },
        "Submit": function () {

            var frm = $('#formData');
            $.ajax({
                url: '/Food/CreateFood',
                type: 'POST',
                data: frm.serialize(),
                success: $createdialog.dialog('close')
            });
        }
    });

После удаления откройте диалоговое окно:

  // Once drop, open dialog to create food
    options.drop = function (event, ui) {
        // Get the ContainerImgName which food dropped at
        var cimg = $(this).attr('id');
        // Pass in ContainerImgName to retrieve respective ContainerID
        // Once success, set the container hidden field value in the FoodForm
        $.ajax({
            url: '/food/getcontainerid',
            type: 'GET',
            data: { cImg: cimg },
            success: function (result) { $('#containerID').val(result); }
        });
        clear();
        $.validator.unobtrusive.parse($createdialog);
        $createdialog.dialog('open');
    };

Ответы [ 2 ]

6 голосов
/ 14 октября 2011

Я столкнулся с той же проблемой, решаемой с помощью:

 $(name).dialog({
            autoOpen: true,
            width: options.witdth,
            heigth: options.height,
            resizable: true,
            draggable: true,
            title: options.title,
            modal: true,
            open: function (event, ui) {
                // Enable validation for unobtrusive stuffs
                $(this).load(options.url, function () {
                    var $jQval = $.validator;
                    $jQval.unobtrusive.parse($(this));
                });

            }
        });

Конечно, вы можете добавить проверку на событие закрытия диалога, в зависимости от того, что вы делаете, в моем случаеВсплывающее окно было просто для отображения ошибок, поэтому я провел проверку загрузки содержимого.(это всплывающее окно показывает результат действия)

1 голос
/ 14 октября 2011

Для каждой динамически генерируемой формы вам нужно вручную запускать валидатор, когда вы внедряете этот контент в DOM, как показано в этом сообщении в блоге с использованием функции $.validator.unobtrusive.parse.

...