آموزش پیشرفته ASP.Net Web Forms نمایش تاریخ شمسی با کلاس Persian Culture

گروه نرم افزاری هیلتن
گروه نرم افزاری هیلتن
1.4 هزار بار بازدید - 3 سال پیش - به نام خدا ، در
به نام خدا ، در خدمت شما عزیزان هستیم با دوره آموزشی ASP.Net Web Forms.در قسمت های قبل ما درباره فایل Global.asax صحبت کردیم. در این قسمت میخواهیم به ارائه یک مثال کاربردی شما را با یکی از کاربردهای این فایل آشنا کنیم.از قبل یک پروژه جدید ایجاد کرده ایم.تو روت سولوشن یک پوشه جدید به نام Pages میسازیم.داخل پوشه Pages یک وب فرم جدید به نام WebForm1 اضافه میکنیم. وارد WebForm1 میشیم و یک تگ input text (تکست باکس از نوع html) روی فرم قرار میدیم.قصد داریم تاریخ جاری سیستم رو بگیریم و داخل تکست باکس نمایش دهیم.از همین رو روی صفحه خالی راست کلیک میکنیم و روی گزینه view code کلیک میکنیم تا به قسمت کدهای سمت سرور منتقل شویم. تو ایونت Page_Load این کدها رو میزنیم: Txt1.Value = DateTime.Now.ToShortDateString() کد بالا تاریخ جاری سیستم رو میگیره و فقط تاریخ (میلادی) رو در داخل input text نمایش میده اما اگر ما بخوایم تاریخ شمسی رو نشون بده.ما از قبل یک کلاس آماده به نام PersianCulture.cs که برای نمایش تقویم شمسی به کار میرود ، دانلود کرده ایم.برای استفاده از این کلاس تو روت سولوشن یک پوشه بنام App_Source میسازیم و داخل App_Source هم یک پوشه هم به نام Cpublic میسازیم که محل قرار گیری کلاس هایی هست که در کل پروژه استفاده میشوند یعنی کلاس های public .فایل PersianCulture.cs رو داخل پوشه Cpublic کپی میکنیم.از قسمت روت سولوشن وارد فایل Global.asax میشیم. فایل Global.asax توابع زیادی دارد یکی از این توابع Application_beginRequest میباشد که این متد در ابتدای هر درخواست فراخوانی میشود.بنابراین در فایل Global.asax ، متد Application_beginRequest را خودمان بصورت دستی ایجاد میکنیم و داخل آن ، کدهای زیر را میزنیم (قبل از نوشتن کد پایین using System.Thereading رو اضافه میکنیم) : Var pc = new PersianCulture() Thread.CurrentThread.CurrentCulture = pc Thread.CurrentThread.CurrentUICulture = pc کد بالا ، ما ابتدا از کلاس PersianCulture یه نمونه میسازیم و اون رو داخل متغییر pc میریزیم و بعد متغییر pc رو به Culture ترد Thread جاری میدهیم.وقتی یک Request به یک سایت بدید در نتیجه اون سایت مجبور هست تا یک Thread ترد Run کنه تا بتونه به Request شما پاسخ بده.وقتی برنامه رو اجرا کنیم ، تاریخ شمسی رو در داخل input text نمایش میده اما مشکل اینجاست که تاریخ رو برعکس نشون میده .برای حل این مشکل باید تاریخ جاری رو بصورت یک آرایه ای از نوع رشته بگیریم و سپس روز و ماه و سال رو از هم جدا کنیم و در آخر با فرمت مطلوب کنار هم بچینیم.به این منظور وارد WebForm1 میشیم و روی صفحه خالی راست کلیک میکنیم و روی گزینه view code کلیک میکنیم تا به قسمت کدهای سمت سرور منتقل شویم.در کد های سمت سرور یک تابع جدید به نام ReverseDate میسازیم و کدهای زیر رو داخلش میزنیم: Public string ReverseDate(string StrDate) { string[] StrArray = StrDate.Split(/) return StrArray[2] +/+ StrArray[1] +/+ StrArray[3] } در کد بالا ما یک تابع جدید به نام ReverseDate ساختیم که یک پارامتر ورودی بنام StrDate از نوع رشته string دارد (که این رشته string در واقع تاریخ جاری توش قرار میگیره) در مرحله بعد یک آرایه از نوع string بنام StrArray ساختیم.سپس تاریخ را که بصورت یک رشته درون متغییر StrDate قرار دارد با استفاده از متد Split (بر مبنای اسلش / ) از هم جدا کردیم سپس قسمت های جدا شده را داخل متغییر StrArray ریختیم.در مرحله آخر هم خانه های آرایه را به ترتیب تاریخ شمسی کنار هم میچینیم تا تاریخ شمسی مرتب شود و صحیح نمایش داده شود. حالا تو ایونت Page_Load این کدها رو به این شکل میزنیم: Txt1.Value = ReverseDate )DateTime.Now.ToShortDateString() ( در کد بالا تاریخ جاری سیستم رو بصورت یک رشته در پارامتر ورودی تابع ReverseDate گرفتیم که تابع ReverseDate ، تاریخ شمسی را مرتب میکنه و داخل input text نمایش میده.
3 سال پیش در تاریخ 1400/05/13 منتشر شده است.
1,482 بـار بازدید شده
... بیشتر