آژانس هواپیماییexchanging

اعمال چند Min و Max با Custome Validation ا

شروع موضوع توسط fivestar ‏2 جولای 2007 در انجمن asp , ASP.NET

  1. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    چه جوری میشه با Custome Validation برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!
     
  2. Graveworm

    Graveworm Registered User

    تاریخ عضویت:
    ‏23 می 2005
    نوشته ها:
    1,063
    تشکر شده:
    12
    محل سکونت:
    Tehran
    جند بار میپرسی ؟! :دی

    شما میتونی از regular expression ها استفاده کنی.
    تو MSDN میتونی پیدا کنی
     
  3. mazoolagh

    mazoolagh Registered User

    تاریخ عضویت:
    ‏10 آپریل 2004
    نوشته ها:
    2,940
    تشکر شده:
    7
    فکر کنم این مورد که ایشون میخواد select case باید استفاده کنه

    دقیقا"
     
  4. Graveworm

    Graveworm Registered User

    تاریخ عضویت:
    ‏23 می 2005
    نوشته ها:
    1,063
    تشکر شده:
    12
    محل سکونت:
    Tehran
    خوب اگه سرور ساید بخواد که مشکلی نیست :دی
     
  5. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    والا من همین قد بلدم که تو Experssion با استفاده از

    کد:
    \d{min,max}
    
    
    میشه تعداد کاراکتر های ورودی رو تعیین کرد.
     
  6. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    66
    محل سکونت:
    نصف جهان
    البته ایشان میتوانند از چند کنترل validation برای کنترل کردن مقدار یک تکست باکس استفاده کنند .

    فکر کنم جای دیگری هم قبلا جواب داده ام !
     
  7. appbannerkhuniresbanner
  8. Graveworm

    Graveworm Registered User

    تاریخ عضویت:
    ‏23 می 2005
    نوشته ها:
    1,063
    تشکر شده:
    12
    محل سکونت:
    Tehran
    اونجوری بین کنترل ها منطق AND اجرا میشه، اما ایشون OR میخواد ;]
     
  9. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    66
    محل سکونت:
    نصف جهان
    بله دقیقا ! ;)

    پس از همان regular expression ها باید استفاده کنند
     
  10. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    دوستان مثل اینکه دقت نکردن !

    من نمی خوام تعداد کاراکتر های ورودی رو تعیین کنم که بحث رفته سر OR یا AND کردن !!!!

    من میخوام مقدار ورودی رو فیلتر گذاری کنم تا یه سری رنج خاص قابل قبول باشه !!!


    اصلا باید تو خاصیت Experssion از d\ استفاده کنم ؟؟؟؟
     
  11. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    66
    محل سکونت:
    نصف جهان
    دوست گرامی ، سخن ما برمبنای استفاده از چند Range validator بود ! که با هم AND میشدند .

    بله از /d میتوانید استفده کنید
     
  12. mazoolagh

    mazoolagh Registered User

    تاریخ عضویت:
    ‏10 آپریل 2004
    نوشته ها:
    2,940
    تشکر شده:
    7
    من هنوز موندم چجوری با regexp میشه خواسته بالا رو برآورده کرد - اگر دوستان لطف کنن یک نمونه کد بگذارن ممنون میشم.
     
  13. Graveworm

    Graveworm Registered User

    تاریخ عضویت:
    ‏23 می 2005
    نوشته ها:
    1,063
    تشکر شده:
    12
    محل سکونت:
    Tehran
    خوب ما هم فهمیدیم همینو دیگه ، نزن ما رو :دی
     
  14. avajang.com .leftavajang.com.right
  15. Graveworm

    Graveworm Registered User

    تاریخ عضویت:
    ‏23 می 2005
    نوشته ها:
    1,063
    تشکر شده:
    12
    محل سکونت:
    Tehran
    میشه چند شرط رو به مدل regularexpression نوشت و با عملگر OR مربوطه، جدا کرد.
    من خودم آشنایی کامل ندارم با فرمت و نحوه نوشتنشون ..
     
  16. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    1- مسلما اولین چیزی که برای جواب این مسئله به ذهن میرسه استفاده از چند تا RangeValidator هست ولی مشکلی که بوجود میاد اینه که چطور این چند تا RangeValidator رو با هم OR کنیم .
    اگه راه حلی باشه که ....


    2- فکر کنم این ایده که فقط یه RegularExpressionValidator باشه و تو خاصیت Validation Experssion از فرمول خاصی استفاده بشه عملی باشه . اگه یه چنین فرمولی بشه نوشت تمومه !

    دوست عزیز قبلا هم گفتم با d\ میشه "تعداد کاراکتر "های ورودی رو کنترل کرد
    در صورتی که من میخوام "مقدار " ورودی رو کنترل کنم و تعداد کاراکتر ها تو این مرحله مهم نیست.

    3- یکی از دوستان بدون اینکه جزئیات بگه گفت باید از Custome Validation استفاده کنی ! دوستان حرفه ای احتمالا می تونن با Custome Validation مشکل رو حل کنن.

    اگر چیزی به ذهنتون میرسه لطفا کدش رو بذارید تا تست کنم مرسی
     
  17. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    66
    محل سکونت:
    نصف جهان
    دوست گرامی

    بنده هم عرض کردم . وقتی سوال شما و خواسته شما خاص میشو د ، باید از روشهای ویژه تری استفاده کنید . مثلا در این مورد چاره ای جز custome validation ندارید البته تا جایی که من میدانم .
     
  18. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    با کمک یکی از دوستان مشکل با استفاده از RegularExpressionValidator حل شد . یعنی اون فرمولی که برای خاصیت ValidationExperssion نیاز بود به دست اومد .

    من یه بار دیگه صورت سوال رو مطرح می کنم و جوابش رو هم میذارم . شاید به درد کسی بخوره
     
  19. fivestar

    fivestar Registered User

    تاریخ عضویت:
    ‏14 نوامبر 2006
    نوشته ها:
    73
    تشکر شده:
    0
    چه جوری میشه برای یه Text BOX چند تا رنج عددی مثلا 0-5 و 10-15 و 20 -25 رو تعیین کرد که کاربر فقط تو این رنجها بتونه عدد وارد کنه اگه غیر این وارد کرد پیغام خطا بده!!!!!!!!!



    جواب : در خاصیت ValidationExpression یک RegularExpressionValidatorمی نویسیم :


    کد:
       ^([0-5]|[1-1][0-5]|[2-2][0-5])$ 

    اگر مثلا بازه هامون از 1000 تا 1059 و 2200 تا 2459 و 3710 تا 3980 باشن اینجوری میشه :


    کد:
       ^([1-1][0-0][0-5][0-9]|[2-2][2-4][0-5][0-9|[3-3][7-9][1-8][0-0])$    
     
  20. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    66
    محل سکونت:
    نصف جهان
    بنده از شما تشکر میکنم . هدف فروم هم چیزی جز به اشتراک گذاشتن اطلاعات نیست .

    البته این از اون مواقعی هست که آدم میگه : ای ی ی ی ی بابا !!!! این که خیلی راحت بود !!! چطور به ذهنمون نرسید !

    پیروز باشید
     
  21. mazoolagh

    mazoolagh Registered User

    تاریخ عضویت:
    ‏10 آپریل 2004
    نوشته ها:
    2,940
    تشکر شده:
    7
    اوه - چه جالب!

    فقط چند تا مورد:

    1- اگر در یک یا چند رنج اعداد منفی داشته باشیم چجوری باید بنویسیم؟ مثلا" از 10- تا 5- یا از 7- تا 8
    2- اعداد اعشاری رو چطور مشخص کنیم؟ مثلا" از 1.5 تا 27.3
     
  22. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    دوستمون لطف کردن و پاسخ رو برامون گذاشتن که البته جواب خوبیه ولی شاید برای شرطهای کمی پیچیده تر (مثلا همون اعداد منفی ) مشکل ساز باشه . یک راه مناسب وجود داره و اون هم استفاده از Custom Validation هست به. به این ترتیب که کد رو براتون می ذارم :


    کد مربوط به Code Behind
    کد:
    protected void ServerValidation(object source, ServerValidateEventArgs args)
        {
    
            try
            {
    
                // Test whether the value entered into the text box is between 0,5 or 10,15.
                int i = int.Parse(args.Value);
                bool flag = false;
                if ((i > 0 & i < 5) | (i > 10 & i < 15))
                    flag = true;
                else
                    flag = false;
                args.IsValid = flag;
    
            }
    
            catch (Exception ex)
            {
    
                args.IsValid = false;
    
            }
    
        }
    
        protected void ValidateBtn_OnClick(object sender, EventArgs e)
        {
    
            // Display whether the page passed validation.
            if (Page.IsValid)
            {
    
                Message.Text = "Page is valid.";
    
            }
    
            else
            {
    
                Message.Text = "Page is not valid!";
    
            }
    
        }
    

    کد HTML مربوط به کنترل ها :

    کد:
    codes in HTML View
    <asp:Label id="Message"  
               Text="Enter a number between 0-5 or 10-15:" 
               Font-Name="Tahoma" 
               Font-Size="11px" 
               runat="server" Font-Names="Verdana"/>
    
          <asp:TextBox id="Text1" 
               runat="server" />
    
          <asp:CustomValidator id="CustomValidator1"
               ControlToValidate="Text1"
               Display="Static"
               ClientValidationFunction="ClientValidate"
               ErrorMessage="Range Number is invalid !"
               ForeColor="green"
               Font-Name="Tahoma" 
               Font-Size="11px"
               OnServerValidate="ServerValidation"
               runat="server"/>
    
          <asp:Button id="Button1"
               Text="Validate" 
               OnClick="ValidateBtn_OnClick" 
               runat="server"/>
    
    

    لازمه توضیح بدم که validation در سمت client صورت می گیره و دلیلش هم وجود المنت ClientValidationFunction="ClientValidate" در کنترل CustomValidator هست . اگر این خصوصیت رو حذف کنید validation در سمت Server صورت می گیره . شاد باشید

    برگرفته از MSDN




    .