
 |
|
مهدی ولی خانی (ولیخانی) هستم .متولد دوم خرداد سال 63 . فارغ التحصیل رشته نرم افزار کامپیوتر ، مقطع کاردانی ، دانشگاه جامع علمی - کاربردی واحد داده پردازی.
در حال حاضر حرفه ی من طراحی و برنامه نویسی وب می باشد . هدف اصلی من از انتخاب رشته نرم افزار کامپیوتر فقط ورود به دنیای طراحی و برنامه نویسی تحت وب بود . در واقع بزرگترین سرگرمی من طراحی و برنامه نویسی می باشد .(چه بهتر که تحت وب باشه!)
ساعات زیادی از وقت روزانه من پشت یک کامپیوتر در اتاقم میگذره . به موسیقی زیاد علاقه دارم . دو سبک موسیقی را بسیار می پسندم . موسیقی اصیل ایرانی و موسیقی راک . رنگ مورد علاقه آبی و تیم مورد علاقه پرسپولیسه .
|
 |
  E-mail

| | Sun | Mon | Tue | Wed | Thu | Fri | Sat | | 28 | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | 31 | 1 | 2 | 3 | | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

| December, 2009 (2) |
| November, 2009 (3) |
| September, 2009 (1) |
| August, 2009 (2) |
| June, 2009 (3) |
| May, 2009 (2) |
| March, 2009 (3) |
| February, 2009 (2) |
| January, 2009 (1) |
| December, 2008 (10) |
| November, 2008 (1) |
| October, 2008 (15) |
| September, 2008 (10) |
| August, 2008 (5) |
| July, 2008 (1) |
| June, 2008 (4) |
| May, 2008 (4) |
| April, 2008 (10) |
| March, 2008 (6) |
| February, 2008 (3) |
| January, 2008 (4) |
| December, 2007 (21) |
| November, 2007 (3) |
| October, 2007 (2) |
| September, 2007 (13) |
| August, 2007 (5) |
| July, 2007 (3) |
| May, 2007 (1) |
| April, 2007 (3) |
| March, 2007 (6) |
| February, 2007 (4) |
| January, 2007 (9) |
| December, 2006 (7) |
| November, 2006 (6) |
| October, 2006 (2) |
| September, 2006 (1) |
 Total Posts: 191 This Year: 0 This Month: 0 This Week: 0 Comments: 255
 newtelligence dasBlog 1.9.6264.0
|
|
برطرف کردن مشکل کنترل منو asp.net و IE 8.0
با ارائه نسخه نهائی IE 8.0 مشکلات زیادی برای طراحان وب بوجود آمد . برنامه نویسان تکنولوژی ASP.net نیز کمابیش با این مشکلات برخورد کرده اند . یکی از این مشکلات ، عدم نمایش صحیح کنترل منو در IE 8.0 می باشد . خوشبختانه مایکروسافت در اقدامی سریع یک Hotfix برای این مشکل ارائه داده است که با نصب آن می توانید مشکل را برطرف کنید .
هر چند بنده به عنوان کسی که مدت ها با این کنترل کار کرده است توصیه می کنم که این کنترل را مثل خیلی از کنترل های ASP.net رها کرده و به فکر استفاده از jQuery و تگ ul برای تولید منوهای خود شوید. هم زیبائی بیشتری دارند . هم خبری از تگ Table نیست و هم میزان کد جاوا اسکریتی که بواسطه پیاده سازی این سناریو به صفحه اضافه می شود کمتر هست و هم Cross Browser است ، چیزی که کنترل منو ASP.net اصلا وجود ندارد . این کنترل با اپرا مشکلات خود را دارد ، با سافاری اپل مشکلات خاص خود را دارد که در همین وبلاگ به آن اشاره کردم ، حالا هم با IE 8.0 مشکل دارد . جهت برطرف کردن این مشکل از Hotfix ارائه شده از سوی مایکروسافت استفاده نمائید.
|
|
 |
|
 |
|
اضافه شدن یک ویرایشگر WYSIWYG به مجموعه ASP.net Ajax Control Toolkit
امروزه ویرایشگر های WYSIWYG یک امکان اولیه برای بروزآوری محتوای وب سايت های دینامیک به شمار می آیند . بعد از ارائه ASP.net Ajax و سپس ASP.net Ajax Control Toolkit از سوی شرکت مایکروسافت جای خالی یک WYSIWYG در مجموعه ASP.net Ajax Control Toolkit بشدت احساس می شد . کنترلهای تجاری زیادی در بازار وجود دارند که اتقاقا اکثرا با ASP.net Ajax هم سازگار هستند . اما گران بودن این کنترل ها و همچنین سنگین بودن آنها باعث میشد که گزینه های مناسبی برای استفاده نباشند . در تاریخ 13 می 2009 تیم توسعه ASP.net Ajax Control Toolkit در سايت CodePlex خبر انتشار نسخه جدید این مجموعه کنترل را ارائه کرد . در این خبر به اضافه شدن 3 کنترل جدید اشاره شده است که اولین و مهترین آنها اضافه شدن یک ویرایشگر متن می باشد که از سوی شرکت Obout به مجموعه ASP.net Ajax Control Toolkit اضافه شده است . طی بررسی های اولیه ای که بنده روی این کنترل انجام دادم آن را کنترل مناسبی جهت استفاده دیدم ، سرعت لود این کنترل قابل قبول بوده ، امکانات خوبی دارد و امکان خصوصی ساز تولبار را دارا می باشد . علاوه براین ، ویرایشگر جدید بصورت کامل فونت تاهوما و زبان های راست به چپ را پشتیبانی می کند . علاوه بر ویژگی های فوق کد HTML تولید شده توسط این ویرایشگر بسیار تمیز می باشد . یکی از معایب این کنترل نداشتن امکان درج عکس و جدول در ویرایشگر می باشد . طی بررسی هائی که بنده انجام دادم امکان اضافه کردن دکمه جدید به این مجموعه در حال حاضر فراهم نمی باشد . با توجه به اینکه اولین نسخه این کنترل ارائه شده است انتظار می رود در آینده ای نزدیک امکانات بیشتری به این کنترل اضافه شود . لینک های مرتبط : + صفحه ASP.net AJax Control Toolkit در سايت CodePlex + صفحه کنترل HTML Editor در وب سايت ASP.net
|
|
|
Thursday, February 12, 2009
|
 |
|
 |
|
معرفی app_offline.htm ، آفلاین کردن یک Web Application در ASP.net
حتما در وبگردی های روزانه خود به سايت هائی برخورد کرده اید که به هنگام ارسال درخواستی مبنی بر مشاهده صفحه ای از آن ، پیغام در حال بروز رسانی و ... برای شما نمایش داده می شود ، برنامه نویسان برای رعایت مسائل امنیتی و ... در هنگام بروزرسانی یک وب سايت سیستمی پیاده سازی می کنند تا تمامی درخواست ها به يک صفحه خاص هدایت شود و در آن صفحه به کاربر اطلاع داده شود که سايت در حال بروزآوری و ... می باشد. راه های زیادی برای پیاده سازی چنین تکنیکی موجود می باشد ، اما ASP.net برای پیاده سازی این سناریو از یک روش جالب استفاده می کند ، کافیست در Root وب سايت خود فایلی با نام app_offline.htm قرار دهید ، از این پس و تا زمانیکه این فایل در Root موجود باشد تمامی درخواست های ارسال شده به سايت به این صفحه هدایت میشود.بعد از اینکه کار شما بعنوان برنامه نویس با وب سايت تمام شد می توانید براحتی این فایل را حذف کنید تا وب سايت برای عموم بازدیدکنندگان قابل دسترس باشد. نکته جالب در مورد این فایل این است که با ایجاد چنین فایلی ASP.net تنها اقدام به یک Redirect ساده نمی کند ، ASP.net همچنین سرویس این سايت را Shut Down می کتد و تمام پردازش های موجود بر روی فایل های این وبسايت متوقف می شود ، با Shut Down شدن یک سايـت براحتی می توانید به فایل هائی که قبلا امکان دسترسی به آنها ، به دلیل استفاده پردازش دیگری ، میسر نبود حالا دسترسی داشته باشید ، آنها را ویرایش نمائید ، حذف نمائید ، جا به جا نمائید و ... نکته جالب دیگری در رابطه با این فایل این است که این فایل حتما باید دارای حجمی بیشتر از 512 بايت باشد در غیر اینصورت IE خطای 404 را نمایش می دهد ! ولی در سایر مرورگرها محدودیت حداقل حجم برای فایل app_offline.htm موجود نمی باشد. نکته آخر که یک نکته منفی در رابطه با این تکنیک می باشد این است که در این سیستم کد 404 از سمت سرور بازگردانده می شود ، به این معنا که فایل درخواست شده یافت نشده است ! در حالیکه سرور در حال حاضر سرویس قابل دسترس نمی باشد؛ در واقع بهتر بود به جای کد 404 که مربوط به عدم وجود صفحه است کد 503 (Service Unavailable)بازگردانده می شد. بازگرداندن کد 404 از سوی سرور چه مشکلی ایجاد می کند ؟ تصور کنید موتورهای جستجو در حالیکه فایل app_offline.htm بر روی سرور موجود است به سايت شما مراجعه می کنند و با مشاهده خطاهائی 404 صفحات ایندکس شده از سايت شما بر روی پایگاه داده های خود را پاک خواهند کرد! توصیه می شود از فایل app_offline.htm برای مدت طولانی استفاده ننمائید.
جهت نگارش مطلب فوق از مطالب زیر استفاده شده است : Taking an ASP.NET Site Offline with a Message (بخش دوم مطلب را مشاهده نمائید.)
|
|
|
Friday, December 26, 2008
|
|
Saturday, December 06, 2008
|
 |
|
 |
|
استفاده مشترک از یک یا چند User Control در چندین IIS Application
شرایط مختلفی وجود دارد که در آن مجبور باشید از یک User Control واحد در چندین Application استفاده کنیم ، گاهی چند Application مجزا میخواهند از یک User Control بصورت مشترک استفاده کنند ، گاهی برنامه شما نیاز دارد تا تحت چندین Application مجزا اجرا شود ، در این مواقع اولین راهی که به ذهن ما میرسد این است که User Control را برای هر Application کپی کنیم ، بطور مثال اگر User Control هائی که قرار است بصورت مشترک استفاده شوند در شاخه UC قرار داشته باشند باید این شاخه را در هر Application کپی کنیم ، مشکل این روش در این است که اگر زمانی محتوای این User Control تغییر کرد ، برای اعمال تغییرات در همه Application ها به تعداد Application های موجود که بصورت اشتراکی از این User Control ها استفاده می کنند باید فایل های مربوطه را در شاخه اشاره شده کپی کرد . اما یک راه حل بهتر هم وجود دارد و آن هم ایجاد Virtual Directory در هر Application است ، این Virtual Directory ها به همان شاخه UC که در یک مکان فیزیکی در هارد هست اشاره می کنند و با استفاده از این روش برای اعمال تغییرات کافی است یک بار فایل ها را در شاخه UC کپی کنیم ، چون تمامی Virtual Directory ها بصورت مشترک از این شاخه استفاده می کنند .
بطور مثال یک فولدر در نظر بگیرید به نام Application شامل 3 فولدر Site1 , Site2 , UserControls که Site1 و Site2 شامل فایل Default.aspx ی هستند که در آنها یوزر کنترل Date که وظیفه نمایش تاریخ فعلی سرور هست Register شده است ، برای اینکه بتوان از فایل Date.ascx که در شاخه UserControls می باشد بصورت مشترک در هر دو Application مربوطه یعنی Site1 و Site2 استفاده کرد کافیست که در هر دو Application یک Virtual Directory به نام UC درست کنیم و این Virtual Directory را به شاخه Application/UserControls بچسبنایم .
حال برای استفاده از این User Control در دو وب سايت میبایستی دو خط زیر را به صفحات مورد نظر اضافه نمائیم:
<%@ Register TagPrefix="UC" TagName="Date" src="UserControls/Date.ascx" %> Date & Time :| Site 1 --> <UC:Date ID="Date1" Runat="Server" /> + مطلب فوق برگرفته از این مطلب میباشد.
|
|
|
Wednesday, December 03, 2008
|
|
Thursday, October 09, 2008
|
|
Wednesday, October 08, 2008
|
|
هاستینگ رايگان دات نت 2.0 و 3.5 بهمراه SQL Server 2005 و بزودی SQL Server 2008
aspSpider شروع به ارائه هاستینگ رايگان دات نت برای توسعه دهندگان کرده است ، سرویس های رايگان aspSpider شامل پشتیبانی از دات نت 2.0 و 3.5 می باشد . در حال حاضر از SQL Server 2005 پشتیبانی می شود و بزودی SQL Server 2008 نیز پشتیبانی خواهد شد .اینگونه خدمات هاستینگ محل مناسبی هستندتا برنامه های خود را بدون صرف هزینه در یک محیط واقعی تست کنیم.
aspspider می نویسد: به دلیل محدود بودن تعداد سرورهای ما عضویت نیز دارای محدودیتی است ، پس تا امکان استفاده از این خدمات رايگان برای شما فراهم است می توانید اکانت رايگان خود را ثبت نمائید. ما هیچ سرویس تجاری هاستینگی نداریم . در صورتیکه تمایل دارید هاست خود را ارتقاء بدهید می توانید از خدمات حامیان ما استفاده نمائید.
منبع:
|
|
|
ارسال ایمیل با استفاده از #C و اکانت Gmail
ارسال ایمیل با استفاده از اکانت Gmail مشابه ساير Mail Server ها می باشد با این تفاوت که Gmail از پروتکل SSL استفاده می کند و پورت ارسال ایمیل آن 587 می باشد و آدرس Smtp آن smtp.gmail.com می باشد . قطعه کد زیر این کار را انجام می دهد: System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
System.Net.NetworkCredential cred = new System.Net.NetworkCredential ("Your_Gmail_Account@gmail.com", "Your_Gmail_Password");
mail.To.Add("To_Address");
mail.Subject = "This is a test mail message";
mail.From = new System.Net.Mail.MailAddress("Your_Gmail_Account@gmail.com");
mail.IsBodyHtml = true;
mail.Body = "This is a test mail message";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
smtp.Credentials = cred;
smtp.Port = 587;
smtp.Send(mail);
|
|
|
غیر فعال کردن ویژگی Auto Complete فرم های وب
مرورگرها برای تسریع در عمل پر کردن فرم های تحت وب ویژگی Auto Complete را برای TextBox ها پیاده سازی کرده اند ، با استفاده از این ویژگی اطلاعاتی که شما در فرم ها وارد می کنید ذخیره شده و در دفعات بعد مقادیری که در مراحل قبل وارد کرده اید به شما پیشنهاد می شود .
موقعیت هائی پیش می آید که شما تمایل داشته باشید که این ویژگی کاربردی را برای یک یا چند فیلد و یا تمام فیلدهای یک فرم تحت وب غیر فعال کنید . برای غیر فعال کردن این ویژگی برای تمامی TextBox های یک فرم مقدار AutoComplete فرم را Off قرار دهید ، در صورتیکه تمایل دارید این ویژگی برای یک یا چند TextBox غیر فعال شود مقدار AutoComplete آن TextBox ها را Off قرار دهید .
در ASP.net هم با ست کردن مقدار Disabled برای AutoCompleteType یک TextBox میتوان ویژگی Auto Complete را برای آن TextBox غیر فعال کرد. البته این ویژگی تنها در IE کار می کند در صورتیکه بخواهیم در سایر مرورگر ها هم فعال باشد باید در Directive صفحه مقدار ClientTarget را UpLevel قرار دهیم .
|
|
|
Thursday, October 02, 2008
|
|
Wednesday, September 24, 2008
|
|
ResolveUrl و ResolveClientUrl در ASP.net
کلاس Control در ASP.net شامل دو متد ResolveUrl و ResolveCilentUrl می باشد که هر دو این متدها یک ورودی دارند که همانا مسیر یک فایل است ، خروجی متد اول آدرس یک فایل نسبت به Root است و خروجی متد دوم مسیر یک فایل نسبت به شاخه فعلی است . بطور مثال اگر ما بخواهیم مسیر فایل Detail.aspx را نسبت به Root دربیارم کافیست از دستور زیر استفاده کنیم : ResolveUrl("Detail.aspx"); حال اگر بخواهیم مسیر فایل Icon.png را که در شاخه Images می باشد را نسبت به شاخه فعلی بدست آوریم کافیست از دستور زیر استفاده کنیم: ResolveClientUrl("~/Images/Icon.png");
|
|
|
Saturday, September 20, 2008
|
 |
|
 |
|
مشکل کنترل منوی ASP.net و مرورگر Safari شرکت اپل ، بیان دو راه حل دیگر
چندی پیش در پستی به بیان عدم نمایش صحیح کنترل منوی ASP.net در مرورگر Safari پرداخنم . در آن پست به بیان یک راه حل کلی پرداختم راه حلی که مشکل تمامی کنترل ها در تمامی پروژه های ASP.net ی که بر روی سرور مورد نظر هستند را رفع می کرد . اما یکی از معایت راه حل ارائه شده این بود که مدیران سرورهای به اصطلاح share امکان اعمال این چنین تغییراتی را بر روی سرور نمی دهند و برای ما که بیشتر برنامه هایمان بر روی سرورهای share اجرا می شوند شاید این روش کارائی نداشته باشد . در این پست قصد دارم 2 روش دیگر را برای رفع این مشکل ارائه کنم که نیازی به compile کردن مجدد dll های موجود بر روی سرور نیست و اصولا با خود سرور کاری ندارد و تغییرات بر روی پروژه اعمال می شود.
روش 1 - اضافه کردن "ClientTarget="UpLevel به Page Directive با اضافه کردن بخش فوق به Page Directive مشکل فوق برای مرورگر سافاری برطرف می شود . به این نکته توجه داشته باشید که در مرورگر فایرفاکس اگر در یک صفحه همزمان از منو و کنترل TreeView استفاده می کنید و برای رفع مشکل نمایش "ClientTarget="UpLevel را به Page Directive اضافه کرده اید آنگاه عمل Expand کردن Node ها در کنترل Tree View دیگر عمل نمیکند.
روش 2 - اضافه کردن "ClientTarget="UpLevel در Code Behind روش اول هم محدودیتی داشت و آن هم مشکل Expand کردن Node ها در TreeView می باشد پس بهتر است "ClientTarget="UpLevel را در Code Behind اضافه کنیم ، حال می توانیم شرطی بگذاریم که اگر مرورگر Safari بود "ClientTarget="UpLevel اضافه شود (تا مشکل برطرف شود) در غیر اینصورت "ClientTarget="UpLevel اضافه نشود تا مشکلی هم برای کنترل TreeView پیش نیاد چرا که تنها سافاری است که مشکل دارد . برای این کار می توانیم از کد زیر استفاده نمائیم :
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit If InStr(Request.ServerVariables("http_user_agent"), "Safari") Then Page.ClientTarget = "uplevel" End If End Sub
|
|
|
Saturday, August 16, 2008
|
 |
|
 |
|
اجرای صفحات ASP.net 2.0 با استفاده از Apache
برای اجرای صفحات ASP.net 2.0 بر روی Apache کافیست که ابتدا آخرین نسخه Apache را از طریق این لینک دانلود کرده و نصب نمائید .سپس Mod AspDotNet را نیز از طریق این لینک دانلود و نصب نمائید. بعد از نصب دو برنامه به مسیر زیربروید :
C:\Program Files\Apache Software Foundation\Apache2.2\conf و فایل httpd.conf را باز کرده و کد زیر را به انتهای فایل اضافه نمائید. #asp.net LoadModule aspdotnet_module "modules/mod_aspdotnet.so" AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo <IfModule mod_aspdotnet.cpp> # Mount the ASP.NET /asp application AspNetMount /SampleASP "c:/SampleASP" #/SampleASP is the alias name for asp.net to execute #"c:/SampleASP" is the actual execution of files/folders in that location # Map all requests for /asp to the application files Alias /SampleASP "c:/SampleASP" #maps /SampleASP request to "c:/SampleASP" #now to get to the /SampleASP type http://localhost/SampleASP #It'll redirect http://localhost/SampleASP to "c:/SampleASP" # Allow asp.net scripts to be executed in the /SampleASP example <Directory "c:/SampleASP"> Options FollowSymlinks ExecCGI Order allow,deny Allow from all DirectoryIndex index.htm index.aspx #default the index page to .htm and .aspx </Directory> # For all virtual ASP.NET webs, we need the aspnet_client files # to serve the client-side helper scripts. AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4" <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles"> Options FollowSymlinks Order allow,deny Allow from all </Directory> </IfModule> #asp.net حال شاخه SampleASP را در درایو C خود ایجاد کرده و فایل index.aspx را در آن قرار دهید : — index.aspx — <%@ Page Language="VB" %> <html> <head> <link rel="stylesheet"href="intro.css"> </head> <body> <center> <form action="index.aspx" method="post"> <h3> Name: <input id="Name" type=text> Category: <select id="Category" size=1> <option>One</option> <option>Two</option> <option>Three</option> </select> </h3> <input type=submit value="Lookup"> <p> <% Dim I As Integer For I = 0 to 7 %> <font size="<%=I%>"> Sample ASP.NET TEST</font> <br> <% Next %> </form> </center> </body> </html> حال Apache را ریستارت نمائید. Start-> Apache HTTP Server 2.2 ->Control Apache Server -> Restart حال در نوار آدرس مرورگر خود http://localhost/SampleASP/index.aspx را وارد نمائید. کار تمام شد ، شما موفق شده اید که از ASP.net 2.0 بر روی Apache اجرا بگیرید. منبع مطلب + کد صفحه index.aspx
|
|
|
مشکل پرداخت الکترونیکی بانک سامان با کاراکتر " , "!
سیستم پرداخت الکترونیکی بانک سامان بدین شکل است که شما باید اطلاعاتی شامل: Merchant ID, Order ID , RedirectUrl , Amount را در قالب متد POST به آدرس http://acquirer.sb24.com/CardServices/controller ارسال نمائید ، بانک سامان بعد از انجام تراکنش و یا کنسل شدن تراکنش از سوی کاربر ، کاربر را به صفحه ی RedirectUrl ارسال می کند اما نکته ای که امروز من به آن پی بردم این است که در RedirectUrl شما نمی توانید از کاراکتر "," استفاده نمائید ، به طور مثال سیستم URL Mapping وبلاگ های DasBlog از همین "," استفاده می کند که نمیتوان با این روش از سرویس پرداخت الکترونیکی استفاده کرد! .در صورتیکه در آدرس RedirectUrl از کاراکتر "," استفاده نمائید در صفحه ورودیه باتک سامان با خطائی نچندان واضح و بامعتی روبرو خواهید شد که دلیلش همین موضوع است ، جهت اطمینان با بخش مربوطه تماس گرفتم و مسئولین مربوطه هم ذکر کردند که کاما کاراکتر نامعتبر می باشد!
|
|
 |
|
 |
|
مشکل کنترل منوی ASP.net و مرورگر Safari شرکت اپل ، بیان یک راه حل
در صورتیکه از کنترل منوی ASP.net استفاده کرده باشید و احیانا وب سايت خود را در مرورگر Safari شرکت اپل ببینید حتما تعجب خواهید کرد که چرا منو اینگونه نمایش داده می شود ، موتور ASP.net سافاری را بعنوان یک مرورگر ناسازگار برای این کنترل می شناسد و کدهای تولید شده برای این مرورگر با کدهای تولید شده برای IE , FireFox , Opera متفاوت است و به این دلیل است که شما منوی خود را به آن صورت که در IE , Firefox , Opera می بینید در Safari مشاهده نمی کنید ، می توانید کدهای تولید شده را با هم مقایسه کنید . اما برطرف کردن این مشکل نیازمند اعمال تغییراتی کوچک و صد البته ساده بر روی سرور است . ابتدا به مسیر زیر بروید. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers فایل mozilla.browser را در ویرایشگر notepad و یا هر ویرایشگر متنی دیگری باز کرده و به دنبال بخش زیر در این فایل بگردید: <browser id=”Safari” parentID=”Gecko”> یکی از زیر شاخه های این بخش کد زیر می باشد که شما باید آن را حذف نمائید: <controlAdapters> <adapter controlType=”System.Web.UI.WebControls.Menu” adapterType=”System.Web.UI.WebControls.Adapters.MenuAdapter” /> </controlAdapters> بعد از حذف این بخش و ذخیره کردن تغییرات دستور زیر را از طریق خط فرمان اجرا نمائید: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regbrowsers.exe -i حال صفحه خود را بار دیگر در سافاری اپل مشاهده کنید ،مشکل عدم نمایش صحیح کنترل منو برطرف شده است :  قبل از تغییرات بعد از تغییرات منبع: Big-O.comدر صورتیکه میخواهید بک آپ قبل از اعمال تغییرات داشته باشد خواهشا فایل mozilla.browser را در مسیری دیگر ذخیره کنید نه در همین مسیر و با نام دیگری چون با مشکل مواجه خواهید شد!
|
|
|
خطای Specified cast is not valid و ASP.net Membership
تا آنجائی که می توانید سعی کنید که جداول مربوط به Membeship را اصلا تغییر ندهید چون با تغییر دادن جداول به احتمال زیاد با خطای Specified cast is not valid در هنگام کار با کلاس Membership مواجه خواهید شد و به عبارت دیگر اگر این جداول را تغییر داده اید و از این خطاها مشاهده می کنید بدانید که مشکل این است که نباید این جداول را تعییر می دادید مایکروسافت پیشنهاد می دهد که تا حد امکان از تغییر دادن جداول بپرهیزد . این لینک و این لینک دو نمونه از همین خطا هستند که بدلیل تغییر در جداول برای کاربران رخ داده اند.
|
|
 |
|
 |
|
پیاده سازی "ارسال فرم با فشار دادن دکمه Enter" در ASP.net 2.0
بسیاری از استفاده کنندگان از وب سايت ها و برنامه های تحت وب عادت دارند که برای ارسال فرم هائی که پر می کنند از فشار کلید Enter استفاده کنند . در این مطلب به معرفی 2 روش ساده جهت پیاده سازی این تکنیک در ASP.net میپردازیم .
تعریف دکمه پیشفرض برای یک فرم : برای هر تگ فرم در ASP.net می توانید یک defaultButton تعریف کنید . این مشخصه زمانی مورد استفاده قرار میگیرد که کاربر کلید Enter کیبورد خود را فشار داده باشد و در واقع رویداد کلیک مربوط به دکمه ای که شما تنظیم کرده اید اتفاق خواهد افتاد . با تعرف defaultButton برای یک فرم در واقع دکمه submit فرم را مشخص کرده اید .
تعریف دکمه پیشفرض ارسال در سطح یک بخش از فرم : فرض کنید که در یک صفحه 2 بخش عضویت در سايت و ورود کاربران داشته باشید ، میخواهیم روشی را پیاده سازی کنیم که کاربر در صورتیکه در بخش "عضویت در سايت" بود اگر کلید Enter را فشار داد پروسه ی مربوط به عضویت شروع شود و در صورتیکه در بخش "ورود کاربران" بود پروسه ی مربوط به ورود کاربران رخ دهد . برای این کار می توانید از Panel استفاده نمائید.برای این کار کافیست کلیه کنترل های مورد نظر خود را در یک Panel قرارداده و اینبار DefaultButton پنل خود را مقداردهی کنید .
|
|
 |
|
 |
|
ASP.NET Ajax client-side framework failed to load و VS2008 Final Version
چند روز پیش یک خطای بسیار زیبا در هنگام باز کردن VS 2008 Beta2 برایم نمایان میشد و اعلام میکرد که این محصولی که شما استفاده می کنید به پایان اعتبار خودش رسیده و خوب من هم هی تنبلی میکردم و نسخه نهائی رو از سايت مایکروسافت دانلود نمیکردم ، بصورت موقت تاریخ سیستم رو کشیدم عقب تا کارمان راه بیفتد . بعد از دانلود نسخه 90 روزه VS 2008 Professional Edition از سايت مایکروسافت به حجم 3.5 گیگا بايت و کرک کردن آن جهت رسیدن به یک VS بدون محدودیت و رایت بر روی یک فروند DVD تصمیم گرفتم که Beta 2 را پاک کرده و Final Version را بنصبم . خوب در ابتدا با خود فکر کردم اگه یه موقع این کرک کار نکرد باز 3 ماه دیگه کی حوصله داره اینو از نو نصب کنه پس تصمیم به این گرفتم که چی ؟ که ساعت سیستم رو تغییر بدهم تا آقای VS به قول خودمون یه دستی از ما بخوره ، خلاصه VS را نصب کردیم و بعدش هم یک پروژه Web Application باز کردیم تا ببینیم این Ajax مشکل داره و یا نه ، F5 رو زدیم و با خطای ASP.NET Ajax client-side framework failed to load. مواجه شدیم ، حالا بیفت به جون گوگل که آقا این مشکل واسه چیه و چرا این خطا میاد ، خلاصه چند ساعتی این VS ما رو معطل خودش کرد تا نهایتا به این صفحه رسیدیم و بعدا هم چون چند روز قبل ترش ایشون در اینجا یه مطلبی در مورد تاریخ و Ajax نوشته بود و با خودم گفتم نکنه این داستان با اون داستان یه مشترکاتی داره ، خلاصه رو یه ویندوز دیگه که تاریخش درست بود VS رو نصب کردم و بنده ی خدا VS مثل موتور بنز کار میکرد بدون هیچ مشکل.
|
|
|
WinInet Error Codes (12001 through 12156)
این فهرست خطاها و شرح هر کدومشون ، خیلی چیز بدرد بخوری هست ، تو آخرین پروژه من که یک پروژه تحت وب با استفاده از Ajax بود واقعا بکار آمد و توانسنم به مشتری بگویم که فلان خطائی که مشاهده میکنی دلیلش چیست و من چه کارهائی برای برطرف کردن مشکل انجام داده ام ولی وقتی یک connectionی داری که سرعت receive ان کمتر از 0.5 کیلوبايت در ثانیه هست دیگرکاری از دست من برنمی آید. مشاهده فهرست خطاها و شرح هر کدام درسايت مایکروسافت
|
|
|
مقداردهی به یک TextBox از نوع Password از طریق Code Behind
شاید تست کرده باشید ، شاید هم نه ! اما نسبت دادن مقدار به مشخصه Text یک TextBox که ازنوع Password می باشد عملا کار بیهوده ای است چرا که TextBox از نوع Password بدین روش قابل مقداردهی نمی باشد.اما چاره کار چیست ؟ می توانید مقدار مورد نظر خود را از طریق اضافه کردن Attribute زیر به TextBox نسبت دهید: txtPassword.Attributes["Value"] = "YOUR PASSWORD!";
|
|
|
Sunday, February 17, 2008
|
 |
|
 |
|
Register کردن یک UserControl در Web.config و بیان یک محدودیت جالب
یکی از امکانات خوبی که در ASP.net 2.0 اضافه شد امکان Register کردن UserControl ها در Web.config و استفاده از آنها در تمامی پروژه بدون Register کردن در بالای صفحات می باشد . به طور مثال فرض کنید که شما یک Side Bar در وب سايت خود دارید که در 80 % صفحات وب سايت شما استفاده می شود و یا یک WYSIWYG دارید که در تعدادی از صفحات استفاده می شود ، Register کردن اینگونه کنترل ها در تمامی صفحات برای استفاده از آنها عملی فوق العاده خسته کننده بود که تا نسخه 1.1 مجبور بودیم که انجام بدیم ، اما خوب نسخه 2 تکنولوژی ASP.net امکان Register کردن در سطح یک پروژه را به شما می دهد . برای اینکار کافیست که تکه کد زیر را به web.config پروژه خود اضافه نمائید ، <system.web>
<pages>
<controls>
<add tagName="tgName" tagPrefix="tgPre" src="~/SomeDir/SomeUC.ascx"/>
</controls>
</pages>
</system.web>اما یک نکته ای در این صفحه ذکر شده است و آن این است :
When a source is specified, the user control itself must not be in the same directory as the page. If it is, you get a run-time error when you attempt to load the page. و خطای مربوطه هم به خطای زیر می باشد :
The page '/CustomControlWebSite/Default.aspx' cannot use the user control '/CustomControlWebSite/WebUserControl.ascx', because it is registered in web.config and lives in the same directory as the page. یعنی اینکه این کنترل و صفحه ای که کنترل را استفاده می کند نباید در یک شاخه باشند ! این مشکل در مورد یک کنترل که از کنترل دیگری نیز استفاده می کند هم کاملا صدق می کند . موفق باشید.
|
|
|
Thursday, January 24, 2008
|
|
Graffiti Beta 2 ارائه شد.
نسخه جدید Graffiti چند روزی هست که ارائه شده است و شما می توانید این نسخه را از طریق این لینک دانلود کنید. تغییرات خوبی در این نسخه اعمال شده است که یکی از آنها که قبلا هم اعلام شده بود جایگزینی VistaDB بجای MS Access است . در ضمن Graffiti در نسخه جدید MySQL را نیز پشتیبانی می کند. به گقته وبلاگ توسعه Graffiti بیش از 100 باگی که کاربران بعد از ارائه اولین بتا گزارش داده بودند برطرف شده است.WYSIWYG هم طبق قول های که توسعه دهندگان داده بودند تغییرات گسترده ای کرده است و اکنون با بسیاری از مرورگرها کار می کند.بتا دو با IIS 7.0 هم مشکل خواصی ندارد ، من خودم Beta 1 رو با IIS 7.0 اجرا کرده بودم که در اون هم مشکل خواصی ندیده بودم.و ... جهت کسب اطلاعات بیشتر در رابطه با تغییرات در این ورژن کلیک نمائید.
|
|
|
Friday, December 21, 2007
|
|
استفاده از ASP.net Ajax 1.0 و net Framework 2.0. در VS2008
در صورتیکه تمایل دارید برای توسعه Application های مبتنی بر net Framework 2.0 و ASP.net Ajax 1.0 از محیط VS2008 استفاده نمائید و از امکانات جدید این محیط توسعه سود ببرید این Template را دانلود و نصب نمائید .
بعد از نصب Template درصورتیکه نسخه Application خود را .net Framework 2.0 انتخاب نمائید Template مربوطه یعنی AJAX 1.0 Enabled ASP.NET 2.0 Web Application به مجموعه Template های شما اضافه می شودکه می توانید جهت توسعه از این Template استفاده نمائید .
لینک های مرتبط: + Using VS2008 to Target .NET Framework 2.0 with ASP.NET AJAX (منبع) + Using VS 2008 to target ASP.NET AJAX 1.0 (روش شماره دو) + دانلود ASP.NET 2.0 AJAX Templates for VS2008
|
|
|
Wednesday, December 12, 2007
|
|
Tuesday, December 11, 2007
|
|
خطای Could not load file or assembly در نسخه نهائی VS2008 و net. 3.5
در صورتیکه با نسخه های Beta ی Orcas پروژه ای نوشته اید و حال به نسخه نهائی VS 2008 کوچ کرده اید و یا اگر تا قبل از این با استفاده از دات نت فریمورک 3.5 (بتا) به تولید Application مشغول بودید و حال به نسخه نهائی این فریمورک کوچ کرده اید ، احتمالا در اجرای پروژه های که با استفاده از محیط بتا تولید کرده اید با مشکل نمایان شدن خطای زیر روبرو خواهید شد:
Could not load file or assembly 'System.Data.DataSetExtensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified. در صورتیکه به فایل web.config مراجعه کنید و همانطور که در خود خطا هم مشخص است نسخه این اسمبلی 2.0.0.0 می باشد که لازم است به 3.5.0.0 ارتقاء یابد ، با تغییر ورژن این اسمبلی در فایل web.config مشکل شما حل خواهد شد.
|
|
|
Monday, December 10, 2007
|
|
اضافه کردن کدهای مربوط به Web Statisticsدر Graffiti CMS
بصورت پیشفرض در بخش مدیریتی Graffiti گزارش های آماری مختصر و مفیدی در بخش های مختلف نمایش داده می شود ، اما در صورتیکه تمایل داشته باشید که از سرویس های رایج مثل گوگل نیز استفاده کنید براحتی می توانید کدهای جاوا اسکریپت مربوط به این سرویس ها را در وبلاگ خود قرار دهید ، برای این کار نیاز به تغییر در فایل های قالب نیست، کافیست بعد از ورود به بخش مدیریتی به بخش Site Options و سپس Settings بروید ، در این بخش می توانید تنظیمات را تغییر دهید ، یکی از همین تنظیمات که در انتهای صفحه قرار داد مربوط به کد سرویس های Stat می باشد .
|
|
|
Sunday, December 09, 2007
|
 |
|
 |
|
ویجت هائی که در Graffiti Beta 1 ارائه شدند.
Graffiti بصورت Drag & Drop قابلیت اضافه کردن Widget های مختلفی به سایدبار وبلاگ شما را می دهد . در اولین Beta ی این ابزار ویجت های زیر ارائه شده اند :
1 - Administrative Options : که در هنگامیکه که شما به عنوان مدیر لاگین کرده اید لینک های مربوط به کنترل پنل ، درج پست جدید و خروج از بخش مدیریتی را برای شما نمایش می دهد . 2 - Amazon Items:نمایش اطلاعات از سايت آمازون بر اساس Amazon Id 3 - An Empty Box : باکس خالی که می توانید در آن مطلبی یادداشت کنید! 4 - Category Widget : نمایش گروه ها 5 - Chalk Widget : ویجت مربوط به کدهای Chalk ، موتور قالب Graffiti 6 - Del.icio.Us : نمایش لینک های شما در خوشمزه! 7 - List Of Links : درج فهرستی از لینک ها 8 - Popular Posts : پست های محبوب با قابلیت اعمال محدودیت در تعداد پست ها جهت نمایش و گروه هائی که مطالب از آنها انتخاب می شوند . 9 - Recent Comments : آخرین نظرات ارسال شده 10 - Recet Posts : آخرین پست ها با قابلیت اعمال محدودیت در تعداد مطالب نمایش داده شده و گروه هائی که مطالب از آنها انتخاب می شود . 11 - Search Box: بخش جستجوی وبلاگ 12 - Syndication Feed : خبر خوان با قابلیت اعمال محدودیت در تعداد مطالب نمایش داده شده 13 - Tag Cloud: نمایش تگ های پست ها ، با قابلیت اعمال محدودیت بر اساس حداقل و حداکثر تعداد پست برای هر تگ جهت نمایش در بخش مربوطه. 14 - Title and Body : ویجت عنوان و متن با قابلیت دریافت کدهای HTML 15 - Title and Plain Text : ویجت عنوان و متن بدون قابلیت دریافت کدهای HTML 16 - Twitter : نمایش Twitt های شما 17 - Uncategorized Posts Widget : نمایش عناوین پست های در بخش Uncategorized Posts ، البته در این ویجت مطالبی که میخواهید در ویجت مربوطه نمایش داده شود را خودتان باید انتخاب کنید . 18 - XBox 360 Gamer Tag : تگ های Xboxی شما !
18 ویجت برای اولین Beta !
ناگفته نماند که در برخی ویجت ها با کلیک بر روی Update خطاهای آشنای تکنولوژی ASP.net نمایان می شود ، که ان شاء الله در نسخه های بعدی مرتفع خواهند شد .
ویجتی که در این بین شدیدا جای خالی اش احساس می شود ، ویجت نمایش آرشیو مطالب درج شده در سیستم بر اساس ماه می باشد یا ویجت تقویم به مانند همین DasBlog .
در ضمن من هر چقدر که در این Graffiti به دنبال بخشی به نام خروجی Rss وبلاگ میگردم چیزی پیدا نمی کنم! شما همچین چیزی می بینید ؟ اما گویا خروجی Rss هم دارد ، اینجا را نگاه کنید.
|
|
|
Friday, December 07, 2007
|
 |
|
 |
|
امکانات جدیدی که در نسخه دوم Graffiti قرار است ارائه شوند .
همانطور که در مطلب قبلی در رابطه با ارائه اولین بتای Graffiti گفتم قرار است که نسخه Beta2 این CMS طی شش الی هشت هفته آینده ارائه شود . تیم توسعه Graffiti دیروز طرح خودش رو برای توسعه Graffiti تا به مرحله Beta 2 ارائه کرده است ، این توسعه در دو بخش افزدون امکانات جدید به بخش های فعلی و افزودن بخش های جدید دنبال خواهد شد.
امکانات جدید به بخش های فعلی Graffiti : 1 - امکان حذف گروه ها 2 - حذف یک پست بصورت کامل از پایگاه داده 3 - حذف Custom Field ها 4 - مرتب سازی پست ها 5 - مدیریت نظرات بصورت دسته ای (Bulk Comment Management)
بخش های جدیدی که قرار است ارائه شوند : 1 - یک فوروم ساده 2 - Variables ، بخش های قابل استقاده مجدد جهت تولید محتوا 3 - Packages ، سیستم های متمرکز جهت تولید پوسته ، ویجت ها و ... 4 - دنبالک یا همون TrackBack 5 - امکانات بیشتر در بخش جستجو 6 -امتیازدهی به پست ها 7 - امکان ارسال اخطارهای پست و کامنت های جدید از طریق ایمیل 8 - مدیریت ارجاع ها به وبلاگ 9 - پوسته های جدید 10 - قابلیت دانلود پوسته ها ، افزونه ها و ... از طریق بخش مدیریتی 11 - ابزارهای وارد کننده اطلاعات از سایر سیستم ها به Graffiti 12 - مدیریت خطاها منبع : +
|
|
|
Thursday, December 06, 2007
|
 |
|
 |
|
Graffiti Beta 1 ارائه شد.
Graffiti نام CMS جدید Telligent می باشد که چندی پیش با آن آشنا شدم. دیروز ایمیلی از طرف تیم توسعه Graffiti برایم آمد که خبر از ارائه اولین نسخه از این CMS می داد . در ویدیوهائی که من قبلا از Grafitti دادم چیزی که مشخص بود در این CMS سادگی از اولین مسائلی است که نظر شما را بخود جلب می کند.در متن این ایمیل نوشته شده که این نسخه تا تاریخ اول مارچ سال 2008 اعتبار دارد و همچنین بعد از این تاریخ پیغام مربوطه در صفحات این CMS نمایان می شود . همچنین گفته شه که نسخه Beta2 این CMS طبق برنامه ریزی های انجام شده قرار است بین 6 تا 8 هفته آینده ارائه شود . جهت دانلود اولین بتای این CMS از این لینک استفاده نمائید. مستندات Graffiti هم در این بخش قابل دسترسی خواهد بود. متن ایمیل :
Welcome to the Graffiti CMS Beta! We are very excited to finally have the opportunity to share Graffiti CMS with you. Before you get started, a couple of quick items: - If you have any comments/tips/suggestions please do not hesitate to contact us at Graffiti-Beta@Telligent.com. This is going to be the primary support channel for the first beta and will be used to help flush out the documentation for the beta 2 and final release.
- The Graffiti Beta will only function until March 1st 2008. After this time, Graffiti will display a message stating the beta has expired. We are currently planning beta 2 to be available in about 6 to 8 weeks, so there should be plenty of overlap.
- Please consult http://docs.graffiticms.com for tips on how to setup Graffiti, create themes, and more. There are currently about 35 articles, but now that the beta has been released we plan on publishing much more.
- Any gotchas which are found during the beta process will be covered at http://docs.graffiticms.com/kb/.
To begin using Graffiti CMS, please download it from the link below and follow the instructions in the readme.htm file. Download: http://graffiticms.com/graffiti-beta1.zip. Thanks in advance for any feedback and/or suggestions. Again, please do not hesitate to contact us with any questions (big or small) at Graffiti-Beta@Telligent.com. Thanks, Scott scottw@telligent.com
|
|
|
Monday, November 26, 2007
|
 |
|
 |
|
بومی سازی در ASP.net - وب سايت چند زبانه - بخش اول
یکی از امکاناتی که در ASP.net به آن توجه خاصی شده است چند زبانه سازی یک وب سايت است ، با استفاده از این امکان در ASP.net قادر خواهید بود که براحتی یک وب سايت چند زبانه داشته باشید . در این مطلب سعی دارم مطالب مقدماتی در رابطه با چگونگی پیاده سازی این امکان در برنامه های تحت وب را بیان کنم.
مرحله اول : ایجاد فولدرهای موردنیاز و نکاتی پیرامون آنها برای شروع کار کافیست یک پروژه جدید وب ایجاد کرده و سپس جهت اضافه کردن فولدر App_LocalResources که محل قرارگیری فایل های resx. (فایل های بومی سازی) می باشد مراحل زیر را انجام دهید: کلیک راست بر روی پروژه>Add>Add ASP.NET Folder>انتخاب App_LocalResources توجه 1 - فولدر App_LocalResources همانطور که از نامش پیداست محل قرارگیری فایل های resx. مربوط به صفحات aspx. و ... خاص می باشد ، فایل هائی که در این فولدر قرار میگیرند بصورت اختصاصی مربوط به صفحات و کنترل های هم نام خودشان هستند و قابل استفاده بصورت اشتراکی نیستند .
توجه 2 - فولدر App_GlobalResources فولدری است جهت قرارگرفتن فایل های resx. اشتراکی ، آن دسته از فایل های resouce که قرار است در بین چند صفحه و یا کنترل بصورت اشتراکی استفاده شوند در این فولدر قرار می گیرند.
توجه 3 - فولدر App_LocalResources مربوط به فایل های شاخه جاری می باشد و نه همه شاخه های برنامه شما ، به طور مثال در صورتیکه شما یک شاخه با نام UserControls داشته باشید و در آن تعدادی کنترل که بخواهید برای آنها امکان چند زبانه سازی را فعال کنید پوشه App_LocalResources را باید در این شاخه هم ایجاد کنید ، فایل های صفحات و کنترلهایی که در شاخه UserControls هستند در این شاخه قرار میگیرند نه در شاخه های هم نام در Root و یا جای دیگر.
مرحله دوم : ایجاد فایل های resx. و نکات پیرامون آن بعد از ایجاد فولدرهای مربوطه نوبت به ایجاد فایل های resx. می باشد ، این فایل ها باید هم نام با صفحات و UserControl ها بوده و به تعداد زبان های وب سايت شما. الگوی نام این فایل ها باید به شکل زیر باشد.
نام زبان + نام صغحه و یا کنترل بهمراه پسوند مربوطه + .resx
بطور مثال برای صفحه Default.aspx که در Root سايت قرار دارد و برای یک وب سايت دو زبانه فارسی انگلیسی نامگذاری فایل های resource مربوط به صفحه Default.aspx به شکل زیر می باشد: Default.aspx.resx (فایل پیشفرض) Default.aspx.fa-IR.resx (برای فارسی کشور ایران) جهت ایجاد این فایل ها کافیست بر روی فولدر مربوطه راست کلیک کرده و Add و سپس Add New Item را انتخاب کنید ، فایل Resources File فایلی است که شما باید انتخاب کنید ، نحوه نامگذاری هم که در چند خط بالاتر ذکر شد.
مرحله سوم : تعریف زوج های کلید و مقدار در فایل های resx و نکات پیرامون آن حال که فولدر و فایل های مربوطه ساخته شد نوبت پر کردن رشته های مربوطه می باشد . کافیست که فایل resx مربوطه را با استفاده از Designer ابزار Visual Studio.net باز کرده در قسمت Name مربوط به هر سطر نام کلید و سپس یک نقطه و سپس نام Property را قراردهید و در قسمت Value هم مقدار را . بطور مثال اگر ما یک کنترل Label در صفحه به شکل زیر داشته باشیم که قرار باشد این کنترل Label عبارت Welcome را نمایش دهد به شکل زیر عمل می کنیم : <asp:Label ID="lblWelcomeMsg" runat="server"></asp:Label> برای بومی سازی این کنترل کافیست عبارت meta:resourceKey="WelcomeMessage" را به این کنترل اضافه کنیم ، با این کار در فایل مربوطه مشخصه های WelcomeMessage به این کنترل نسبت داده می شوند . <asp:Label ID="lblWelcomeMsg" runat="server" meta: resourceKey="WelcomeMessage"></asp:Label>
حال کافیست به مانند تصویر زیر در فایل مربوطه سطر زیر را تعریف کنیم . این کار را برای ساير فایل های مربوط به زبان های فارسی و ... هم انجام دهید .
مرحله چهارم: معرفی Culture و UICulture در Directive صفحات در بالای هر صفحه و در بخش Directive می توان دو مشخصه Culture و UICulture وجود دارند ، اولی برای بومی سازی رشته های ارقام و تاریخ و ... استفاده می شود و دومی هم مربوط به ظاهر کنترل ها می باشد ، در واقع فایل های resx مربوط به UICulture هستند.با نسبت دادن Auto به این دو مشخصه موتور ASP.net اطلاعات را بر اساس زبان مرورگر نمایش می دهد .
مرحله پنجم : تعریف زبان صفحه از طریق Code Behnid اما اگر بخواهیم از طریق Code behind اطلاعات مربوط به UICulture و Culture را تنظیم کنیم چه باید کنیم ، راه حل بسیار ساده است . کد زیر را نگاه کنید :
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fa-IR");
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fa-IR"); این دو خط مربوط به تعریف Culture و UICulture برای صفحه می باشد کافیست این کد را در رویداد InitializeCulture قرار دهید تا در هنگام درخواست صفحه زبان فارسی باشد ، این روشی است که بسیاری از سايت های چند زبانه از آن استفاده می کنند ، معمولا در اینگونه سايت ها در فرم عضویت آیتمی مربوط به زبان پیش فرض وجود دارد و یا در خود سايت می توان از طریق یک ListBox زبان را انتخاب کرد! البته این بومی سازی مختص عبارت نمی باشد ، شما می توانید جهت نوشته ها ، رنگ ، مسیر عکس و خیلی چیزهای دیگر را نیز به این روش مقداردهی کنید .با ادغام css و بومی سازی ASP.net براحتی می توان وب سايت های با n زبان مختلف و پشتیبانی راحت از زبان های rtl و ltr ساخت . در بخش های بعدی این سری مقاله به نحوه تعریف و استفاده از Global Resources و دستیابی به محتویات فایل های resx از طریق Code Behind خواهم پرداخت .
|
|
 |
|
 |
|
غیر فعال کردن button در صورت کلیک بر روی آن ، یک راه حل
یکی از روش هائی که برای جلوگیری از چند بار کلیک بر روی button ها در یک صفحه وب استفاده می شود غیر فعال کردن button بلافاصله بعد از کلیک بر روی آن می باشد ، در این روش دیگر کاربر نمی تواند چند بار کلیک کند و متوجه میشود که صفحه در حال پردازش است و میبایستی تا فعال شدن button منتظر باشد ، نمایش یک پیغام بلافاصله بعد از غیرفعال کردن button و یا نمایش یک عکس gif هم می تواند در این راه به شما کمک کند. روش پیاده سازی چنین سناریوی بسیار ساده است ، کافیست که رویداد Onclick رو به button مربوطه اضافه نمائید و سپس در آن رویداد button را غیر فعال کرده و سپس رویداد PostBack را صدا بزنید . یک نمونه برنامه به شکل زیر است :
System.Text.StringBuilder sbValid = new System.Text.StringBuilder(); sbValid.Append("this.value = 'Please wait...';"); sbValid.Append("this.disabled = true;"); sbValid.Append(this.Page.GetPostBackEventReference(this.btnSubmit)); تنها موردی که باقی می ماند تا این سناریو به صورت کامل پیاده سازی شود بحث کنترلهای اعتبار سنجی یا همان Validation Controls می باشد ، در این روش به محض کلیک بر روی button ، کنترل مورد نظر غیر فعال میشود و سپس رویداد مربوط به Post Back صدا زده می شود ، برای حل این مشکل کافیست قبل از غیرفعال کردن تابع Page_ClientValidate را صدا بزنیم ، این تابع به ما میگوید که صفحه معتبر است یا خیر / پس کد کامل به شرح زیر می شود : System.Text. StringBuilder sbValid = new System.Text. StringBuilder(); sbValid.Append( "if (typeof(Page_ClientValidate) == 'function') { "); sbValid.Append( "if (Page_ClientValidate() == false) { return false; }} "); sbValid.Append("this.value = 'Please wait...';"); sbValid.Append("this.disabled = true;"); sbValid.Append(this.Page.GetPostBackEventReference(this.btnSubmit)); حال در صورتیکه صفحه معتبر نباشد button غیر فعال نمی شود . در انتها یادآور میشوم که چندی پیش هم یک مطلبی نوشتم در مورد غیر فعال کردن صفحات ، از آن هم برای حل این مشکل می توان استفاده کرد. مشاهده مطلبمنبع مقاله : Disable Button On PostBack (ASP.NET) - also works with validation controlsموفق باشید.
|
|
|
Sunday, September 23, 2007
|
|
نسخه جدید ASP.net Ajax Control Toolkit ارائه شد.
نسخه 10920 بسته ASP.net Ajax Control Toolkit که مربوط به ماه سپتامبر می باشد در تاریخ 2007-09-20ارائه شده است که می توانید فایل های مربوطه را از اینجا دانلود کنید. در این نسخه کنترل جدیدی به مجموعه کنترلهای موجود اضافه نشده است و تنها به رفع باگ های کنترل های Calendar, PopupBehavior, AutoComplete, Accordion, ConfirmButton, ModalPopup, MaskedEdit و Slider پرداخته شده است. جهت مشاهده دموی از کنترلهای بسته ASP.net Ajax Control Toolkit هم می توانید این بخش از وب سايت ASP.net را مشاهده کنید. نکته جالب اینجاست که معمولا ایشون در امر نوشتن مطلب در مورد ارائه نسخ جدید هرآنچه که به ASP.net ربط داشته باشند به نوعی پیشتاز هستند و پست های ایشان معمولا به عنوان مرجع در نظرگرفته می شوند که در مورد ارائه نسخه جدید ASP.net Ajax Control Toolkit خبری از پست ایشان نیست!
|
|
|
Wednesday, September 12, 2007
|
 |
|
 |
|
تغییر تنظیمات پیش فرض در کنترل های ASP.net Ajax Control Toolkit
تا چندی پیش به شکل خیلی ریز به بررسی و استفاده از کنترلهای Microsoft ASP.net Ajax Control Toolkit نپرداخته بودم ، این پروژه جدید باعث شد تا اندکی توجه به این کامپوننت Open Source داشته باشم ، در نگاه اول مجموعه ای است خوب و کاربردی برای برنامه نویسان دات نت که می تواند امکانات جالبی به برنامه های تحت وب شما بدهد ، اما این پروژه Ajax Control Toolkit مشکلاتی نیز دارد که یکی از آنها که بنده جدیدا به آن برخورده ام مشکل عدم داشتن تنظیمات کافی برای کنترل ها است ، نبود این تنظیمات بیشتر موقعی احساس میشود که شما یک برنامه نویسی باشید که بخواهید از یک زبان راست به چپ به عنوان زبان برنامه تحت وب خوداستفاده کنید . بنده این مشکل را در دو کنترل ValidatorCalloutExtender و NumericUpDownExtender به وضوح دیدم . سعی می کنم مشکلات را با طرح مثال هائی بیان کنم .
اولین مشکل در مورد اندازه بالنی است که بوسیله کنترل ValidatorCalloutExtender جهت نمایش پیغام ظاهر می شود ، اندازه این کنترل یک اندازه ثابت است و قابل تغییر توسط شما نمی باشد ، بنده این مورد را در فوروم سايت ASP.net بسیار جستجو کردم و متاسفانه اعلام شده بود که این تنظیمات به صورت Hard Code هستند و در صورت تمایل باید Source پروژه Microsot ASP.net Ajax را دانلود کرده و در فایل های js مربوط به هر کنترل تنظیماتی که بصورت Hard Code هستند را تغییر دهید و سپس فایل های dll جدید را به پروژه خود اضافه نمائید ، در صورتیکه سری به این کدها بزنید و برای نمونه برای حل مشکل طول و عرض بالن پیغامی که بوسیله Validator Callout Extender ظاهر میشود میبایستی فایل ValidatorCalloutBehavior.js که در شاخه ValidatorCallout پروژه AjaxControlToolkit می باشد را توسط ویرایشگر Visual Studio.net باز کرده و بخش زیر را تغییر دهید :
this._width = "250px"; مشکل فوق زیاد مرتبط با زبان فارسی نیست ولی مشکل زیر که برای آن حتی از طریق دستکاری در فایل های js هم فعلا راه حلی پیدا نکرده ام تنها برای زبان های راست به چپ است .
محل نمایش این بالن همیشه سمت راست TextBox است ! و در زبان های راست به چپ که عنوان سمت راست TextBox قرار میگیرد (برعکس زبان ltr که سمت چپ است) مشکل عدم زیبائی به وجود می آید ، در واقع سمت چپ TextBox در زبان های ltr انتها محسوب می شود و بالن بر این اساس قرار میگیرد در حالیکه انتهای TextBox در زبان های rtl سمت راست هست . یک نمونه را در زیر می توانید مشاهده کنید : در همین تصویر بالا اگر توجه کنید اندک تغییراتی هم در فونت می توانید مشاهده کنید ، که آن هم بوسیه همین تغییر در کدها صورت گرفته ، البته این یک مورد را می تونستیم از طریق بازی با css انجام دهیم ، به این صورت که یک تگ div و یا span بیرون تگ تعریف کنترل بزاریم و با css فونت را عوض کنیم ولی چون برای من این تغییر میبایستی در تمام سطح پروژه اعمال می شد ترجیح دادم که این را هم به وسیله Hard Code اعمال کنم.
البته تغییر در Hard Code هم همچین چیز خوبی نیست ولی وقتی تنها گزینه پیش روی شما همین گزینه باشد چاره ای جز این ندارید ، فکر کنید که برای بروز کردن مجموعه کنترل های Ajax Control Toolkit مجبور باشید که تغییرات را دوباره بر روی پروژه جدیدی که از سايت CodePlex دانلود کرده اید اعمال کنید.
مشکل نمایش بالن در سمت راست یک TextBox در کنترل NumericUpDownExtender هم قابل مشاهده است ، بدین معنا که آیکون های فلش بالا و پائین نیز به مانند بالن در سمت راست هستند .
تا اینجای کار تنها چیزی که در رابطه با rtl , ltr مشکلی نداشته ReorderList است ، البته ReorderList برای خودش کلی مشکل داشته و داره و خواهد داشت ، اما کنترل فوق العاده کارآمدی است .
|
|
|
Thursday, August 30, 2007
|
 |
|
 |
|
راه حلی برای رفع مشکل اجرای کند صفحات localhost بوسیله فایرفاکس در ویستا
 یکی دیگر از مشکلاتی که در مورد استفاده از tinyMce در داخل Update Panel داشتم و تا به امروز هیچ راه حلی برایش پیدا نکرده بودم ، مشکل کندی اجرای صفحات در فایرفاکس بود ، صفحات در IE به درستی و خیلی سریع اجرا می شدند اما امان از این فایرفاکس که تا صفحه به صورت کامل لود شود سه بار من سکته می کردم ، واقعا اعصابم را خرد کرده بود تا اونجا که بی خیال فایرفاکس شده بودم و صفحات را تنها با IE تست می کردم ، البته یه جستجوی هم مثل همیشه در گوگل کردم ولی نتیجه ای بدست نیاوردم تا اینکه این مطلب آقای Scott Gu ما را برد به صفحه ای که به بیان این مشکل و صد البته بیان یک راه حل برای آن پرداخته بود . اما راه حل این مشکل: مشکل در رابطه با IPV6 , DNS است و با غیرفعال کردن این بخش در فایرفاکس مشکل حل می شود . جهت این کار در Address bar مروگر فایرفاکس خود عبارت about:config را تایپ نمائید تا به بخش config فایرفاکس وارد شوید ، عبارت network.dns.IPV6 را در TextBox مربوطه وارد نمائید و بر روی نتیجه Double Click کرده تا مقدار این بخش به True تغییر یابد ، حال مشکل شما در رابطه با کندی فایرفاکس حل شده است.
|
|
|
دو خبر جدید در رابطه با دات نت

نسخه جدید وب سايت رسمی ASP.net در دسترس عموم کاربران این وب سايت قرار گرفت . تا چندی پیش در صورتیکه به وب سايت www.asp.net رجوع می کردید در بالای سايت نواری را مشاهده می کردید که پیشنهاد مشاهده نسخه جدید وب سايت را به شما می داد . حال این نسخه به جای نسخه قبلی این وب سايت قرار گرفته است . خبر دیگر اینکه امروز نسخه Beta 2 نرم افزار Visual Studio 2008 Orcas ارائه شد . جهت مشاهده اطلاعات بیشتر و همچنین دانلود این نسخه از Orcas کلیک کنید.
|
|
|
Saturday, November 11, 2006
|
|
آقای Scott Gu و کنفرانس لاس وگاس
با سلام . آقای Scott Gu فايل های مربوط به کنفرانس Dev Connections در لاس وگاس (کریسمس ما هم تو لاس وگاس کنفرانس شش و هشت داریم :)را بر روی وبلاگ خودشون قرار دادند . در مورد AJAX و LINQ و خود ASP.net , Visual Studioصحبت هائی شده است . لینک های که در مورد مقالات تکمیلی در مورد LINQ هست را حتما یک سری بزنید . عکسی که در کنار این پست قرار گرفته است هم بسیاز زیبا می باشد .

مشاهده اصل مطلب در وبلاگ آقای Gu
اینم عکس تبلیغاتی آقای Scott Gu و تی - شرت آهنگ No More DLL Hell که لینک دانلود آن هم در زیر می بینید :

در مورد این آهنگ و لینک دانلود
از حامد و مصطفی به خاطر پست قبلی متشکرم هارد نسوخته بود کنترلر مشکل داشت که گویا رفع شده و الان داره مثل روز اولش کار میکنه .
موفق باشید.
|
|
|
 |