PDA

View Full Version : یک مشکل با Validation Control



setarh-arjoman
دوشنبه 31 اردیبهشت 1386, 08:34 صبح
سلام

چرا وقتی که من در برنامه زیر Mous را از فیلد اول به فیلد دوم میبرم بلافاصله یک error به من داده میشه که "You have enter in both Field the same NUmbers " در جاییکه من هنوز نه فیلد دوم را نوشتم و نه دکمه button را اکتیو کردم؟؟؟؟؟؟؟
مرسی از لطف همگی.
ستاره


<html dir="rtl">




<body dir="ltr">

<form runat="server">
To compare Tow Number, write your Numbers:<br>
<asp:TextBox ID="txtFNumber" Runat="server"></asp:TextBox> <b>=</b> <asp:TextBox ID="txtSNumber" Runat="server"></asp:TextBox>
<asp:CompareValidator
ControlToValidate="txtFNumber"
ControlToCompare="txtSNUmber"
ErrorMessage="You have enter in both Field the same NUmbers"
runat="server"
></asp:CompareValidator>
<br>
<asp:Button Text="compare" Runat="server"></asp:Button>
</form>
</body></html>
<script language="VB" runat="server">
</script>

PrinceDotNet
دوشنبه 31 اردیبهشت 1386, 08:39 صبح
خاصیت client برای validation ها همینه. شما وقتی یک فیلد رو focus می کنی اگر چیزی توش ننویسی و بری روی کنترل دیگه همین خطا رو میده.

setarh-arjoman
دوشنبه 31 اردیبهشت 1386, 10:34 صبح
میشه کمی بیشتر توضیح بدید؟ و باید چیکار کنم که اینطوری نشه؟
من توی فیلد اول عدد مینویسم و همین که میخوام برم فیلد دوم پیغام غلط میده. یعنی من توی فیلدی که focus میکنم عدد هم مینویسم و وقتی که میخوام برم فیلد دوم این اشکال بوجود می یاد.

sarvestan
دوشنبه 31 اردیبهشت 1386, 10:47 صبح
مقدار validation group را در دکمه و validator برابر یک شناسه واحد قرار بدید

setarh-arjoman
دوشنبه 31 اردیبهشت 1386, 10:54 صبح
:ناراحت: من تازه وارد هستم در ASP.NET میشه مثالش رو بزنید؟
مرسی

sarvestan
دوشنبه 31 اردیبهشت 1386, 11:05 صبح
در بخش properties کنترل Compare validator، مقدار Validation Group را برابرtest قرار بدید!
و در کنترل دکمه هم Validation Group را برابر test قرار بدید

setarh-arjoman
دوشنبه 31 اردیبهشت 1386, 11:13 صبح
در بخش properties کنترل Compare validator، مقدار Validation Group را برابرtest قرار بدید!
و در کنترل دکمه هم Validation Group را برابر test قرار بدید

ببینید من اینکار رو کردم ولی جواب نمیگیرم :گریه:


<html>
<body>
<form runat="server">
To compare Tow Number, write your Numbers:<br>
<asp:TextBox ID="txtFNumber" Runat="server"></asp:TextBox>
<b>=</b>
<asp:TextBox ID="txtSNumber" Runat="server"></asp:TextBox>
<br>
<asp:Button Text="compare" Runat="server" ValidationGroup="First"></asp:Button>
<asp:CompareValidator
ControlToValidate="txtFNumber"
ControlToCompare="txtSNUmber"
Text="You have to enter in both Field the same NUmbers"
runat="server"
ValidationGroup="First"
></asp:CompareValidator>
</form>
</body></html>
<script language="VB" runat="server">
</script>

sarvestan
دوشنبه 31 اردیبهشت 1386, 11:14 صبح
مقدار EnableClientScript را در Comparevalidator برابر False قرار بدید

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox1"
ControlToValidate="TextBox2" EnableClientScript="False" ErrorMessage="CompareValidator"></asp:CompareValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />

setarh-arjoman
دوشنبه 31 اردیبهشت 1386, 11:18 صبح
:لبخندساده: مرررررررسسسسسسسسسسسسییییی ی فکر کنم که همین بود. EnableClientScript.
مرسی. ممنونم

setarh-arjoman
سه شنبه 01 خرداد 1386, 08:15 صبح
سلام PrinceDotNet
مشکل من دیروز حل شد ولی منظور شما رو هنوز متوجه نشدم. البته فهمیدم که این اشکال به خاطراین بوجود میآمد که Validation در سمت من اجرا میشد، ولی علتش رو هنوز نفهمیدم که چرا به محض اینکه من از یک TextBox خارج میشدم پیامی error را که validationControl تعریف کرده بودم ظاهر میشد. و توضیح شما رو هم متوجه نشدم.
اگر راهنماییم کنید یا مرجعی رو نام ببرید که خودم برم بخونم ممنون میشم

amir.NET2
سه شنبه 01 خرداد 1386, 15:07 عصر
Validation کنترل ها برای چک کردن از توابع جاوا اسکریپت استفاده می کنند

خب جاوااسکریپت هم سمت کلاینت اجرا میشه دیگه

یعنی برای اجرا درخواستی به سمت سرور ارسال نمیشه

setarh-arjoman
چهارشنبه 02 خرداد 1386, 07:59 صبح
Validation کنترل ها برای چک کردن از توابع جاوا اسکریپت استفاده می کنند

خب جاوااسکریپت هم سمت کلاینت اجرا میشه دیگه

یعنی برای اجرا درخواستی به سمت سرور ارسال نمیشه

یک سوالی که برای من پیش اومده این هست که پس چرا ما گزینه Runat="server"‌ را میگذاریم؟ و در حقیقت این کار معنی نمیده.

Alireza_Salehi
چهارشنبه 02 خرداد 1386, 08:49 صبح
این کنترل ها در سمت سرور هم Validation انجام میدهند، نه فقط د سمت Client ، کافیه EnableClientScript را False کنید و نتیجه را ببینید.

Mojtaba_ss
چهارشنبه 02 خرداد 1386, 09:27 صبح
setarh-arjoman (http://barnamenevis.org/forum/member.php?u=37581) اگه EnableClientScript رو false کرده باشی قاعدتا صفحه postBack میشه و بعد اگه error وجود داشته باشه اونو نشون میده.
یه بار دو خاصیت مهم Comparevalidator رو با هم چک کنیم:
ControlToValidate برای کنترلیه که باید Validation روی اون انجام بشه که اینجا شما txtFNumber رو انتخاب کردی.
ControlToCompare برای کنترلیه که میخوای نسبت به ControlToValidate بسنجی که اینجا شما txtSNUmber رو انخاب کردی.
حالا وقتی txtFNumber رو پر می کنی و میخوای از اون خارج بشی طبیعیه که Validation انجام میشه چون txtFNumber همون ControlToValidate در حالیکه ControlToCompare خالیه یعنی چیزی توش ننوشتی!
پس اگه جای دوتا رو عوض کنی و اتفاقا EnableClientScript رو هم true کنی Validation سمت client انجام میشه.
اگه EnableClientScript رو false کنی میشه همون asp قدیم و تفاوتی با asp.net 2.0 نمی کنه.
در حقیقت ما میخوایم که validation رو سمت client انجام بدیم تا بار زیادی به سرورمون اعمال نشه.
من همیشه این کارو برای ایمیل و پسورد انجام می دم و مشکلی هم ندارم.

Alireza_Salehi
چهارشنبه 02 خرداد 1386, 10:22 صبح
validation سمت Client به هیچ وجه کافی نیست و حتما باید سمت Server هم انجام بشه!

البته بستگی به اهمیت امنیت در سایت داره!

Mojtaba_ss
چهارشنبه 02 خرداد 1386, 13:49 عصر
میشه یکمی بیشتر توضیح بدی؟!

Alireza_Salehi
چهارشنبه 02 خرداد 1386, 16:23 عصر
هکرها خیلی راحت Validation های سمت Client رو دور می زنند ، در خیلی از روش های حمله به سایت ها از وارد کردن اطلاعات نامعتبر در فیلد ها استفاده میشه ، و اگر می خواهید سایت مطمئنی داشته باشید حتما باید سمت سرور داده های وارد شده توسط کاربر رو چک کنید تا ایرادی نداشته باشند.

البته ASP.NET 2 پارامترهای امنیتی رو لحاظ میکنه ولی کافی نیست.

مثلا یه تاپیکی در مورد SQL Injection همین جا بود اون رو بخون.

این هم منبع امنیت :
http://msdn2.microsoft.com/en-us/practices/bb190386.aspx
http://msdn2.microsoft.com/en-us/practices/bb190340.aspx

لینک های زیر رو هم از داخل دو تا لینک بالا گذاشتم:
Improving Web Application Security: Threats and Countermeasures (http://msdn2.microsoft.com/en-us/library/ms994921.aspx)
Building Secure ASP.NET Pages and Controls (http://msdn2.microsoft.com/en-us/library/aa302426.aspx)


این لینک ها رو هم ببین:
Design and Deploy Secure Web Apps with ASP.NET 2.0 and IIS 6.0 (http://msdn.microsoft.com/msdnmag/issues/05/11/SecureWebApps/default.aspx)