المستخدم الذي تم إنشاؤه Validator Wont اتصل بالتحقق من صحة الجانب العميل JavaScript على "معقد" التحكم في المستخدم
-
06-09-2019 - |
سؤال
لقد قمت بإنشاء عنصر تحكم مستخدم (من 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 الخاص بك: