PDA

View Full Version : سوال: تایید صحت اطلاعات ورودی توسط کاربر چگونه؟



saed2006
چهارشنبه 01 اردیبهشت 1389, 08:25 صبح
برای validat کردن اطلاعات و تایید صحت درستی انها ایا باید یه کلاس مجزا ساخت؟
که اطلاعات پاس داده بشه به اون کلاس و چک شود؟
برنامه های اصولی چگونه صحت داده ها را کنترل میکنند؟
ایا از ابزار های کمکی میشه در این زمینه استفاده کرد؟
کدام ابزار ها؟
ایا پروژه ای که این چک کردن در درونش اصولی انجام شده رو به عنوان نمونه دارین تا همه استفاده کنن
تشکر

mohammad diba
چهارشنبه 01 اردیبهشت 1389, 08:37 صبح
سلام دوستان این سوال چند وقتیه که ذهن منم مشغول کرده کسی از دوستان نظری داره؟

M.YasPro
چهارشنبه 01 اردیبهشت 1389, 08:47 صبح
سلام
من هم چند وقت پیش همین موضوع رو مطرح کردم . فکر می کنم همه سلیقه ای با این موضوع برخورد می کنند . توی این پست که دوستان همراهی نکردند
http://barnamenevis.org/forum/showthread.php?t=207683

saed2006
چهارشنبه 01 اردیبهشت 1389, 08:50 صبح
به نظر من استاد musavy یا دیگران که در این زمینه کار کرده اند
باید بیان وسط و این مشکل رو برای همیشه حل کنن
توی وبلاگ اقای نصیری بعضی از مفاهیم و تکنیک ها به طور کامل مو شکافی شده اند ولی در مورد این مطلب سخنی به میان نیامده بود
به هر حال منتظر کمک و همراهی دوستان با تجربه میمانیم

marijooon
چهارشنبه 01 اردیبهشت 1389, 10:17 صبح
من فکر نمی کنم کلاس مجزایی لازم باشد مگر اینکه بخواهیم چند لایه کار کنیم. درسته؟
اساتید چرا جواب نمی دن یه کم به این شاگردای کوچولو کمک کنید!:خجالت:

alireza_s_84
چهارشنبه 01 اردیبهشت 1389, 10:58 صبح
سلام:
من از این روش برای پروژه های خودم استفاده میکنم:
1- ابتدا فرمی از کلاس Form مشتق کردم (من یک فرم برای پروژه های خودم ایجاد کردم که توی یکی از تاپیک هام در مورد گرافیکش توضیح دادم جستجو کنید پیدا میکنید) بعد برای فرم یک خاصیت IsValid و یک خصوصیت Validators که از نوع ValidatorCollection است(در بند 3 توضیح دادم) قرار دادم
2- یک کلاس بنام Validator ایجاد کردم این کلاس کلاس پایه برای تمام کنترلهای اعتبارسنجی منه و واسط IValidator رو پیاده سازی میکنه و همچینین از کلاس UserControl مشتق شده و دارای یک Label برای نمایش متن خطا است.
3- یک کلاس دیگه بنام ValidatorCollection که واسط های ICollection و IEnumerable رو پیاده سازی میکنه هم ایجاد کردم که کار این کلاس نگهداری تمامی کنترلهایی اعتبارسنجی است که به فرم من افزوده میشه.(در بند 1 توضیح دادم)
4- چندتا کنترل اعتبار سنجی هم با نام های مختلف از کلاس Validator مشتق کردم که هر کردم مربوط به اعتبار سنجی یک چیزی هست مثلا RequiredFiledValidator که کارش اعتبار سنجی فیلدهایی که باید حتما پر بشن و ..
5- با اضافه کردن هر کنترل اعتبار سنجی به فرم اون رو به یک کنترل اختصاص میدم و در نهایت تنها با چک کردن یک خاصیت IsValid فرم کار اعتبار سنجی رو انجام میدم.
6- کنترلهای مجموعه اعتبارسنجی من شامل 7 کامپوننت هست که برای اعتبار سنجی موارد مختلف کاربر داره مثل تاریخ میلادی یا شمسی ، عبارات با قاعده ، الزامی بودن فیلد ، وابستگی به مقدار یک کنترل دیگه و ...

مزایای این کار: یک بار طراحی کردم الان 2 ساله استفاده میکنم. سرعت عمل به شدت بالا میره چون تنها با اضافه کردن یک کنترل اعتبار سنجی و اختصاص کنترل مورد نظر و پیام خطا همه چی حله.
عیبی هم که داره زیاد شدن کنترلهای روی فرمه(که به نظر من قابل چشم پوشیه)
دیگه نیازی به نوشتن هیچ کدی نیست به جز کنترل اعتبار سنجی DbValueValidator که کارش چک کردن مقدار وارد شده در دیتابیسه که باید کدهای لازم برای دریافت داده از دیتابیس رو خودتون توی یکی از متدهاش بنویسید.
در نهایت این روشیه که صفحات وب برای اعتبار سنجی Page از اون استفاده میکنن با این تفاوت اینجا خیلی بهتر میشه عمل کرد.
مهم: سناریوی به این قشنگی کد نویسی با خودتون من نمونه کد نمیذارم چون اگر گذاشتم باید توضیح بدم و جواب پس بدم(نمیشه که ملت رو بذارم سر کار) چون الان وقت ندارم نمیتونم ولی بعدها قصد دارم با فرم و کنترلهایی که نوشتم کامل برای دانلود (شاید هم با سورس) بذارم همینجا.

اگر چیز دیگه ای یادم اومد باز میام توضیح میدم هر سوالی هم بود در خدمت هستم
موفق باشید

shahab_ss
چهارشنبه 01 اردیبهشت 1389, 16:22 عصر
سلام دوستان،
این کار میتونه در دو سطح انجام بشه :
یا در سطح رابط کاربر : مشکلی که وجود داره اینه که ReUsable نیست و برای هر فرم باید مجدد تکرار بشه!
ویا اینکه در سطح دیتا ، که این سطح میتونه بسته به مدل کار شما متفاوت باشه، مثلا میشه برای کلاس هاتون یک متد ChkValidation داشته باشید و از اون استفاده کنید.

این دو مدل رو من در یکی از فیلمهای آموزشی AppDev دیدم و به نظرم مدل دومی بهتره.