المستخدم الذي تم إنشاؤه Validator Wont اتصل بالتحقق من صحة الجانب العميل JavaScript على "معقد" التحكم في المستخدم

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

سؤال

لقد قمت بإنشاء عنصر تحكم مستخدم (من System.Web.UI.USERCONTROL)، وقم بإنشاء مدقق خاصي لعنصر تحكم المستخدم (من system.web.ui.webcontrols.basevalidator). كل شيء يعمل موافق حتى أحاول الحصول على عنصر تحكم المستخدم للقيام بالتحقق من صحة جانب العميل.

أثناء محاولة تصحيح هذه المشكلة، قمت بتعيين "التحكم في التحقق من صحة" إلى مربع نص بدلا من عنصر تحكم المستخدم المخصص، والبرنامج النصي جانب العميل يعمل بشكل جيد! يبدو لي أنه لديه مشكلة مع تحكم المستخدم المركب الذي قمت بإنشائه. هل واجه شخص هذه المشكلة من قبل؟ هل فشل أي شخص آخر التحقق من الصحة جانب العميل على عناصر تحكم المستخدم المخصصة؟

بعض المعلومات الإضافية:

عنصر التحكم المركب هو قائمة المنسدلة و "صورة محمل"، حيث إنها قائمة المنسدلة التي تم تمكين AJAX (باستخدام IcallBacKeVenthandler). أعلم أن JavaScript جانب العميل يتم كتابةه إلى الصفحة، وقد وضعت تنبيه ("رسالة عشوائية") كطريق أول في وظيفة Validator التي تظهر فقط إذا كان التحقق من صحة مربع نص (أي ليس عند التحقق منه التحكم المخصص الخاص بي)

اللغة: C # (ASP.NET 2.0) و JQUERY 1.2.6

في ملف ASPX:

<rms:UserDDL ID="ddlUserTypes" runat="server" PreLoad="true" />
<rms:DDLValidator 
        ID="userTypesVal"
        ControlToValidate="ddlUserTypes"
        ErrorMessage="You have not selected a UserType"
        runat="server"
        Text="You have not selected a UserType"
        Display="Dynamic"
        EnableClientScript="true" />

في المدقق رمز وراء

protected string ScriptBlock
        {
            get
            {
                string nl = System.Environment.NewLine;
                return
                    "<script type=\"text/javascript\">" + nl +
                    "   function " + ScriptBlockFunctionName + "(ctrl)" + nl +
                    "   {" + nl +
                    "       alert('Random message'); " + nl +
                    "       var selVal = $('#' + ctrl.controltovalidate).val(); " + nl +

                    "       alert(selVal);" + nl +
                    "      if (selVal === '-1') return false;  " + nl +
                    "      return false;  " + nl +
                    "   }" + nl +
                    "</script>";
            }
        }

    protected override void OnPreRender(EventArgs e)
    {
        if (this.DetermineRenderUplevel() && this.EnableClientScript)
        {
            Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", this.ScriptBlockFunctionName);
            Page.ClientScript.RegisterClientScriptBlock(GetType(), this.ScriptBlockKey, this.ScriptBlock);
        }

        base.OnPreRender(e);
    }

أعرف تحكمي Progmertiropertialsvalid () وتقييمهاؤدي () عمل موافق.

أقدر أي مساعدة في هذه المسألة.

نويل.

لا يوجد حل صحيح

نصائح أخرى

حاول استخدام CustomValidator بدلا من BaseValidator:

http://msdn.microsoft.com/en-us/library/9ee01cx(vs.71).aspx.

وتعيين ClientValidationFunctionFund لضمان يسمى JS الخاص بك:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx.

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