يحدث CustomValidator من جانب الخادم بعد فوات الأوان في .Net Wizard

StackOverflow https://stackoverflow.com/questions/1227081

سؤال

لدي مشكلة مع معالج جمع البيانات.

يحتوي المعالج الخاص بي على عدد من أدوات التحقق من جانب العميل (التعبير العادي والحقل المطلوب وما إلى ذلك) وجميعها تعمل بشكل جيد.

لقد قمت للتو بإضافة CustomValidator إلى أحد عناصر التحكم، وهو ما يستدعي بعض التعليمات البرمجية من جانب الخادم.(للأسف يجب أن يكون من جانب الخادم).

مشكلتي هي أن هذا الرمز يبدو أنه تم استدعاؤه بعد انتقال المعالج إلى الخطوة التالية (أو أنه في طور النقل).

وبالتالي، فإن حقيقة أنها تُرجع كاذبة للتحقق من الصحة لا فائدة منها بالنسبة لي ...

أقوم بإضافة أداة التحقق ديناميكيًا كجزء من أسلوب InitControl الخاص بي كما يلي:

mustUploadAnImageValidator = new CustomValidator();
mustUploadAnImageValidator.ControlToValidate = radioButtonList.ID;
mustUploadAnImageValidator.ValidationGroup = "wizardGroup";
mustUploadAnImageValidator.ErrorMessage = "You must select a valid gallery image to use";
mustUploadAnImageValidator.Display = ValidatorDisplay.Static;
mustUploadAnImageValidator.ServerValidate += 
    new ServerValidateEventHandler(mustUploadAnImageValidator_ServerValidate);
mustUploadAnImageValidator.CssClass = "galleryValidationMessageTop";

يعمل هذا مع جميع أدوات التحقق الأخرى، لكن لا يمكنني معرفة سبب تحرك المعالج قبل عودة التحقق من صحة الخادم الخاص بي.

لقد أضفت نافذة منبثقة لجافا سكريبت، يتم استدعاؤها من جانب الخادم، والتي تقول بشكل أساسي "أنا غير صالح" ويظهر هذا بعد تحرك الشاشة مباشرةً.

أي اقتراحات وردت بامتنان.

هل كانت مفيدة؟

المحلول

ولقد تمكنت من حل هذه المسألة.

واضاف لقد معالج حدث للNextButtonClick وPreviousButtonClick أن يدعو ببساطة التحقق من صحة الصفحة مرة أخرى.

protected virtual void DataCollectionWizard_PreviousButtonClick(object sender, WizardNavigationEventArgs e)
    {
        //manually validate the page, as the automatic validation seems to ignore CustomValidators
        Page.Validate("wizardGroup");

        if (!Page.IsValid)
        {
            e.Cancel = true;
        }
    }

ويجري الآن يسمى بلدي مدقق جانب الملقم مرتين، مرة من قبل رمز الأصلي المعالج، الذي هو ثم تجاهل، و2nd الوقت بهذه الطريقة، والتي ثم يتوقف المعالج الانتقال إلى الخطوة التالية ....

وانها ليست أفضل الإصلاح في العالم، ولكن على الأقل أنها تعمل! سوف تحديث هذه الوظيفة إذا كنت من أي وقت مضى معرفة ما يجري في الواقع على.

نصائح أخرى

تأكد من إضافة عنصر التحكم في كل إعادة نشر، في حدث Init.

يحرر

يتعين عليك أيضًا إجراء عملية التحقق من جانب العميل يدويًا من أجل أدوات التحقق المخصصة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top