在我的模型中提交3个远程验证的问题

时间:2012-05-03 07:21:47

标签: asp.net-mvc

我有一个基于viewModel数据的视图,带有一些远程验证(3个带远程验证的字段)。

问题是当我提交表单时,所有3个远程验证都会在提交的同时触发(见下文)。

enter image description here

因此,您在上图中看到,所有3个远程验证都是在同一时间触发并处于挂起状态。 1分钟后我暂停了。

这是我的代码:

var $dialog = $('#modal-dialog');
$dialog.modal('show');
// Enable client side validation
$.validator.unobtrusive.parse(this);
// Setup the ajax submit logic
submitLogic(params);

function submitLogic(params) {
    var $form = $('#modal-dialog form');
    $form.submit(function () {

        // Do not submit if the form does
        // not pass client side validation
        if (!$(this).valid()) {
            writeError('msgError', pDialogForm.validationFailed);
            return false;
        }

        clearErrors();

        $.post($(this).attr('action'), $(this).serialize(), function (data, status) {
            // Post success
            $('#modal-dialog').modal('hide');
        }).error(function (error, status, a, b) {
            // Post failed
            writeError('msgError', pDialogForm.validationFailed);
            // Need to reactivate client side validation
            $.validator.unobtrusive.parse($form);
            // Need to rebind submit event
            submitLogic();
        });
        // Unbind form submitting
        $form.unbind();
        return false;
    });
}

我的远程验证码:

    public ActionResult EmailAlreadyExists(string email, int? contactID, ContactTypeEnumViewModel type )
    {
        var contact = _requestServiceClient.GetContactFromEmailAndType(email, (ContactTypeEnumDTO) type);
        return Json((contact == null) || (contact.ContactID == contactID), JsonRequestBehavior.AllowGet);
    }

    public ActionResult NameAlreadyExists(int? contactID, ContactTypeEnumViewModel type, string FirstName, string LastName)
    {
        var contact = _requestServiceClient.GetContactFromFirstNameLastNameAndType(FirstName, LastName, (ContactTypeEnumDTO)type);
        return Json((contact == null) || (contact.ContactID == contactID), JsonRequestBehavior.AllowGet);
    }

我的观点模型:

public class ContactEditViewModel
{
    public int ContactID { get; set; }

    [Required, Remote("NameAlreadyExists", "Contact", AdditionalFields = "ContactID, Type, FirstName, LastName", ErrorMessageResourceName = "NameAlreadyExists", ErrorMessageResourceType = typeof(UserResource))]
    public string FirstName { get; set; }

    [Required, Remote("NameAlreadyExists", "Contact", AdditionalFields = "ContactID, Type, FirstName, LastName", ErrorMessageResourceName = "NameAlreadyExists", ErrorMessageResourceType = typeof(UserResource))]
    public string LastName { get; set; }

    [Required, EmailRegex, Remote("EmailAlreadyExists", "Contact", AdditionalFields = "ContactID, Type", ErrorMessageResourceName = "EmailAlreadyExists", ErrorMessageResourceType = typeof(UserResource))]
    public string Email { get; set; }
    ...

我很丢失:(我试图找到一个解决方案,因为这些日子没有成功。任何帮助都非常感激。

度过愉快的一天。

0 个答案:

没有答案