PDA

View Full Version : راه حل برای مشکل کنترلهای اعتبارسنجی بعد از آپلود



hamed_z
دوشنبه 16 مهر 1386, 11:09 صبح
با سلام خدمت دوستان
اولا خوشحالم که بعد از 20 ماه خدمت سربازی می تونم دوباره برنامه نویسی کنم. 20 ماه دوری از کامپیوتر مغز آدم فرمت میشه.
دوما : مشکلی که validator ها بعد از آپلود دارند اینه که باعث میشن ، رویداد کلیک button های موجود در صفحه رخ ندهد. حتی اگر خاصیت Causes validation مربوط به button را false کرده باشیم همچنان این مشکل پابرجاست. (همانطور که می دانید با false کردن این خاصیت برای button ها در هنگام کلیک روی آنها کنترلهای اعتبار سنجی یا همان validator ها عمل نخواهند کرد و فرم اعتبار سنجی نمی شود)

این مشکلی بود که بعد از آپلود سایت متوجه آن شدم در صورتیکه سایت روی client مشکلی نداشت و همه چیز درست کار می کرد. من از تاپیکهای دیگری که در رابطه با این موضوع بود، متوجه شدم که این مشکل هاستهای ایرانی است (البته این جمله از قول دوستان بود).

به هر حال همانطور که شما هم می دانید validator ها ، برای اعتبار سنجی فرم هم کد طرف سرور را تولید می کنند و هم کد طرف کلاینت را . اگر مرورگر قادر به کار با جاوا اسکربپت باشد ، منطق اعتبار سنجی طرف کلاینت به طور خودکار به مرورگر فرستاده می شود و اگر مرورگر از جاوا اسکریپت حمایت نکند ، روتینهای اعتبار سنجی به طور خودکار در کد طرف سرور پیاده سازی خواهند شد.

برای حل این مشکل باید خاصیت EnableClientScript مربوط به هر کدام از Validator ها را False کنیم. با این کار روتین اعتبار سنجی کلاینت را غیر فعال می کنیم و از روتینهای اعتبار سنجی طرف سرور استفاده خواهیم کرد.

این کار دو مزیت دارد:
یکی اینکه مشکل عمل نکردن رویداد کلیک button ها حل می شود.
دوم اینکه اعتبار سنجی طرف کلاینت فقط در Enternet explorer نسخه 4.0 به بالا کار می کند و با مرورگرهای دیگر از جمله Netscape که بسیاری از کاربران از این مرورگر استفاده می کنند کار نمی کند. پس بهتر است که خاصیت EnableClientScript مربوط به Validator ها را False کنیم تا اعتبار سنجی طرف کلاینت را غیر فعال کنیم و یا اینکه از کنترلهای اعتبار سنجی استفاده نکنیم و خودمان آنها را بنویسیم.

این کار دو مشکل دارد:
مشکلی که این روش دارد این است که فرم ما برای اعتبار سنجی به سرور فرستاده می شود و کاربر باید کمی منتظر بماند. :D
دوما ، مشکل دیگری که باید به آن توجه داشته باشیم این است که چون فرم ابتدا به سرور پست می شود کدهایی که درون رویداد کلیک دکمه ها نوشته ایم اجرا می شود. در صورتیکه اگر داده های ورودی کاربر اشتباه باشد نباید این کد ها اجرا شوند و نباید هیچ عملی صورت گیرد. چون اعتبار سنجی طرف کلاینت راغیر فعال کرده ایم این مشکل پیش می آید. برای اینکه این مشکل برطرف شود در اول روال کلیک دکمه خاصیت IsValid را چک کنید و در صورتیکه IsValid برابر با true باشد اجازه اجرای کد را بدهید



If IsValid <> False Then
کد شما
End If



موفق باشید

Behrouz_Rad
دوشنبه 16 مهر 1386, 12:38 عصر
شما چرا صورت مسئله رو پاک می کنی برادر؟
به روش ذیل که در وبلاگم توضیح دادم عمل کنید...
http://brad.barnamenevis.org/?p=38

موفق باشید.

hamed_z
دوشنبه 16 مهر 1386, 23:46 عصر
با سلام

جناب راد من صورت مسئله را پاک نکردم. در واقع نوعی راه حل ارائه دادم. در ضمن من برای asp.net 1.1 این راه حل را پیشنهاد دادم.
من 2 تا 3 روز با مشکل عمل نکردن رویداد کلیک دکمه ها بعد از آپلود سایت مواجه بودم و با سرچی که در تاپیکها انجام دادم شما و دوستان در این مورد خیلی بحث کرده بودید. از اون همه بحث به این نتیحه رسیده بودم که یا باید هاست ایرانی نگیریم و یا اعتبار سنجی را خودمان طراحی کنیم.
من هم بعد از کلی کار کردن با برنامه و مطالعه و .... به این راه حلی که در بالا گفتم رسیدم.
قصد من از باز کردن این تاپیک این بود که آقایونی که ممکنه این مشکلو داشته باشن و راهنمایی کنم و کمکی کرده باشم.
عذر می خواهم اگر مطلب تکراری بود