برگزیده های پرشین تولز

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

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
دوستمون لطف کردن و پاسخ رو برامون گذاشتن که البته جواب خوبیه ولی شاید برای شرطهای کمی پیچیده تر (مثلا همون اعداد منفی ) مشکل ساز باشه . یک راه مناسب وجود داره و اون هم استفاده از 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




.
فکر میکنم این کد شما، server side باشه، نه client side .. :؟
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
نه قربونت برم Client Side هست . توضیح دادم چکار باید کرد که Server Side باشه یا client side .....
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
شما عین این کد رو کپی کن ؛ حتما جواب میده . من دوباره همین کد رو امتحان کردم و درست بود .
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
با عرض معذرت

چون من رو این موضوع کلید کردم ! پس از یه سری تحقیق فهمیدم که روشی که مطرح کردم مشکل داره !

امیدوارم دوستان یه روش بدون نقص ارائه بدن : دی

و اما مشکلی که پیش اومد چیه !

شما فرض کن بازه ما از 28 باشه تا 34 . با اون روشی که من قبلا طرح کردم باید تو Validation Expression

می نوشتیم:
کد:
 /^([2-3][8-4])$/

ولی این یه مقدار Invalid بحساب میاد و اصلا نمیشه واردش کرد !!!!!!!!!!!!!
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
با عرض معذرت

چون من رو این موضوع کلید کردم ! پس از یه سری تحقیق فهمیدم که روشی که مطرح کردم مشکل داره !

امیدوارم دوستان یه روش بدون نقص ارائه بدن : دی

و اما مشکلی که پیش اومد چیه !

شما فرض کن بازه ما از 28 باشه تا 34 . با اون روشی که من قبلا طرح کردم باید تو Validation Expression

می نوشتیم:
کد:
 /^([2-3][8-4])$/

ولی این یه مقدار Invalid بحساب میاد و اصلا نمیشه واردش کرد !!!!!!!!!!!!!
خوب شما سرور ساید این کار رو انجام بده یا جاوا اسکریپت رو دستی بنویس
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
با عرض معذرت

چون من رو این موضوع کلید کردم ! پس از یه سری تحقیق فهمیدم که روشی که مطرح کردم مشکل داره !

امیدوارم دوستان یه روش بدون نقص ارائه بدن : دی

و اما مشکلی که پیش اومد چیه !

شما فرض کن بازه ما از 28 باشه تا 34 . با اون روشی که من قبلا طرح کردم باید تو Validation Expression

می نوشتیم:
کد:
 /^([2-3][8-4])$/

ولی این یه مقدار Invalid بحساب میاد و اصلا نمیشه واردش کرد !!!!!!!!!!!!!
آقا کلا" regexp برای کنترل محدوده نیست - راه درستش همون select case هست و یا ifهای متعدد (که جناب amin_lili کد نمونه واسش گذاشتن)


خوب شما سرور ساید این کار رو انجام بده یا جاوا اسکریپت رو دستی بنویس
grave worm جان ، فرقی نمیکنه که کد کدوم سمت اجرا بشه - این روش در کل نادرست هست.
 

amin_lili

کاربر تازه وارد
تاریخ عضویت
24 آپریل 2007
نوشته‌ها
532
لایک‌ها
2
سن
43
محل سکونت
ای کاش آنجا ...
با عرض معذرت

چون من رو این موضوع کلید کردم ! پس از یه سری تحقیق فهمیدم که روشی که مطرح کردم مشکل داره !

امیدوارم دوستان یه روش بدون نقص ارائه بدن : دی

و اما مشکلی که پیش اومد چیه !

شما فرض کن بازه ما از 28 باشه تا 34 . با اون روشی که من قبلا طرح کردم باید تو Validation Expression

می نوشتیم:
کد:
 /^([2-3][8-4])$/

ولی این یه مقدار Invalid بحساب میاد و اصلا نمیشه واردش کرد !!!!!!!!!!!!!

ببینید دات نت دیگه نیومده برای همه حالتهای موجود validation داشته باشه . اگه اینطور بود دیگه نیازی به Custom Validation نبود . اگر برای شما سرور ساید یا کلاینت ساید بودن validation مهمه که براتون توضیح دادم چه کار کنید . مگر اینکه براتون مهم باشه که 4 خط کد ساده if-else برای کنترل کردن ورودی ننویسید .
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
آقا کلا" regexp برای کنترل محدوده نیست - راه درستش همون select case هست و یا ifهای متعدد (که جناب amin_lili کد نمونه واسش گذاشتن)



grave worm جان ، فرقی نمیکنه که کد کدوم سمت اجرا بشه - این روش در کل نادرست هست.
من منظورم اینه که با همون حلقه ها و چک کردن ها یا client side یا server side این کار رو انجام بده و بیخیال regex بشه :دی
 
بالا