سؤال

لا بد لي من أن تفعل شيئا خاطئا. لا يمكنني تنفيذ طريقة ServerValidate الخاصة بـ CustomValidator.

لقد حصلت على صفحة Visual Basic ASP.NET مع CustomValidator ...

<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server"
    ControlToValidate="TextBox1"
    ErrorMessage="Friendly message goes here."
    Display="Dynamic" />
<asp:Button ID="Button1" runat="server"
    Text="Submit"
    CausesValidation="True" />

لهذا الاختبار ، حصلت على مجموعة التحقق من الصحة دائمًا ...

Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
    args.IsValid = False
End Sub

ولكن ، عند النقر فوق الزر ، لا تنفذ طريقة CustomValIdator1_ServerValidate () أبدًا!

Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Page.Validate()
    If Page.IsValid Then
        'it executes the code here!
    End If
End Sub

ولا حتى لو قمت بالتحقق من صحة هذا السيطرة صراحة ...

CustomValidator1.Validate() 'does nothing?

ما الخطأ الذي افعله؟

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

المحلول

أضف العقار:

 ValidateEmptyText="True"

نصائح أخرى

هل تضع زر إرسال التحكم في التحقق في نفس مجموعة التحقق من الصحة؟

أولاً ، يبدو أنك تفتقد سمة OnServerValidate في ترميزك أعلاه.

ثانياً ، أود أن أتحقق من التأكد من أن CustomValIdator1_ServerValidate تم إعداده كحدث EventHandler لحدث ServerValidate لـ TextBox1. لقد مررت مناسبات حيث قمت بتغيير اسم طريقة التحقق من صحة في الترميز والرمز ، لكن IDE لم يتم تحديث اسم طريقة الاشتراك تلقائيًا إلى مندوب EventHandler

أعلم أنه سؤال غامض (أو قد يبدو كما هو!). ولكن هل أدخلت بالفعل أو غيرت القيمة في مربع النص؟ أنا فكر في لن يتم تشغيل المدقق دون تغيير محتويات مربع النص.

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