0

私はmvcを使用しています。ここで作成ビューをポップアップとして入力しています。モデルで指定した検証を取得できますが、コントローラー側に記述された「名前が存在するかどうか」などの検証はポップアップで実行されず、表示されますポップアップを閉じます。

コントローラー側は、次のコードを使用して、ログイン名が存在するかどうかを確認しています

 if (db.login.Count(l => l.Name== loginname_create) > 0)
            {
                ModelState.AddModelError("loginname", "name already exists");
            }

jqueryポップアップダイアログコードは

$("#dialog").click(function (e) {
    e.preventDefault();
    var url = $(this).attr('href');
    $("#dialog-create").dialog({
       height:300,
        width: 400,
        show: { effect: 'drop', direction: "up" },
        modal: true,
        open: function (event, ui) {
            $(this).load(url);
           //$.validate.unobtrusive.parse("myform");

            }, close: function (event, ui) {
                $(this).dialog('close');
        }
    });
    $("#dialog-create").dialog('open'); return false;
});

コントローラーで行った検証をポップアップダイアログに表示したいと思います。

4

2 に答える 2

0

私はこの拡張機能を使用します:

/// <reference path="jquery-1.4.4.js" />
/// <reference path="jquery.validate.js" />
/// <reference path="jquery.validate.unobtrusive.js" />
// Original from: http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/
(function ($) {
    $.validator.unobtrusive.parseDynamicContent = function (selector) {
        //use the normal unobstrusive.parse method
        $.validator.unobtrusive.parse(selector);

        //get the relevant form
        var form = $(selector).first().closest('form');

        //get the collections of unobstrusive validators, and jquery validators
        //and compare the two
        var unobtrusiveValidation = form.data('unobtrusiveValidation');
        var validator = form.validate();

        $.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
            if (validator.settings.rules[elname] == undefined) {
                var args = {};
                $.extend(args, elrules);
                args.messages = unobtrusiveValidation.options.messages[elname];
                //edit:use quoted strings for the name selector
                $("[name='" + elname + "']").rules("add", args);
            } else {
                $.each(elrules, function (rulename, data) {
                    if (validator.settings.rules[elname][rulename] == undefined) {
                        var args = {};
                        args[rulename] = data;
                        args.messages = unobtrusiveValidation.options.messages[elname][rulename];
                        //edit:use quoted strings for the name selector
                        $("[name='" + elname + "']").rules("add", args);
                    }
                });
            }
        });
    }
})($);

そして、コンテンツをロードしたら、次のようにします。

$.validator.unobtrusive.parseDynamicContent('#myform');

それが役に立てば幸い。

于 2013-08-22T05:51:50.373 に答える