atVSG

0011001000110100

وحید امیری مطلق

توسعه دهنده وب و موبایل

تبدیل کردن اعداد انگلیسی به فارسی و برعکس در سی شارپ


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

میتونیم عمل تغییر اعداد رو با فراخوانی پیاپی متود replace روی یک رشته انجام بدیم.



تغییر زبان اپ در زمان اجرا در Xamarin.Android


android-localization_298x244یکی از ویژگی های مثبت اندروید پشتیبانی کامل اون از محلی سازی است. اندروید با توجه به اهمیت پشتیبانی از زبان های مختلف از ابتدا با ویژگی های منحصر به فردی همراه شده. به طور پیش فرض شما باید در تمام قسمت های برنامه ی خودتون و هر جا نیاز به استفاده از یک رشته (string) دارید به جای hard code کردن اون ها، از resource ها استفاده کنید. برای زبان های مختلف فولدر های مختلفی رو در برنامه در نظر بگیرید. خود سیستم عامل در زمان اجرای برنامه با توجه به تنظیمات دستگاه، فایل های زبانی رو load میکنه. مثلا اگر من یک فولدر به نام values و یکی دیگه به نام values-fa داشته باشم، و زبان دستگاه انگلیسی (یا یک زبان دیگر که فولدر خاص اون در برنامه ی من موجود نیست) باشه، اندروید فایل های درون پوشه ی values رو load میکنه. به همین صورت در صورتی که زبان دستگاه فارسی باشه، فایل های درون values-fa لود میشن.

این خیلی خوبه اما شاید گاهی اوقات بخواهید یک اپشن (option) در برنامه داشته باشید که به کاربر اجازه ی تغییر زبان برنامه رو بدون نیاز به تغییر زبان دستگاه بده. چیزی که در سیستم عامل ویندوز (Windows) خیلی استفاده میشه. این کار در اندروید هم امکان پذیر هست.



جلوگیری از بارگذاری مجدد دیتا در Activity در Xamarin.Android هنگام تغییر Orientation


xamarin

سیستم عامل اندروید به طور پیش فرض هنگام چندین اتفاق Activity رو Restart میکنه. یکی از این وضعیت ها تغییر وضعیت دستگاه از حالت Portrait به Landscape و برعکس و همچنین در نسخه های جدید تر، تغییر سایز صفحه نمایش هست. اکثر مواقع اطلاعات درون activity حاصل یکسری عملیات سنگین هست و ریلود کردن دوباره ی اون ها صرفا به خاطر تغییر حالت دستگاه، عاقلانه نیست. برای این منظور میتونیم از کد زیر در قسمت attributes هر activity که میخواهیم اطلاعاتش موقع تغییر orientation حفظ بشه استفاده کنیم:

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)

برای مثال در این activity:

[Activity (Label = "@string/app_name", MainLauncher = true, Icon = "@mipmap/icon", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
public class HomeActivity : Activity
{
	protected override void OnCreate (Bundle savedInstanceState)
	{
		base.OnCreate (savedInstanceState);
	}
}

با این روش احتیاجی هم به تغییر فایل manifest نیست.


لوپ بی نهایت با PartialView در ASP.NET MVC5


یک مشکل واقعا آزار دهنده موقع استفاده از PartialView ها در ASP.NET MVC وقتی اتفاق میفته که کدتون مثل حالت زیر باشه:

        public PartialViewResult _SomePartialView()
        {
           // do something
            return View();
        }

در کد بالا شما وارد یک لوپ بی نهایت میشید. نه تنها یک پیغام درست و حسابی برای خطای در کدتون نمیگیرید، بلکه با اجرای این کد IIS کلا کرش میکنه! لازم نیست بگم که Intellisense هم در پیدا کردن خطا هیچ کمکی به شما نمیکنه.

اما اشکال کجاست؟؟؟

در این متود ما اعلام کردیم که میخواهیم یک PartialViewResult برگردونیم ولی در قسمت return داریم یک View برمیگردونیم. برای برطرف کردن این مشکل کافیه قسمت return رو به شکل زیر بنویسید:

return PartialView();

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


آپلود عکس در TinyMCE از طریق ASP.NET MVC 5


asp.net-mvc-tinymce

آپلود عکس از طریق یک  WYSWIYG HTML editor مثل TinyMCE یا CKEditor یک کار خیلی رایج و ضروریه ولی متاسفانه با جستجوی در اینترنت نمیتونید روشی جدید و متناسب با ASP.NET MVC رو که با TinyMCE 4 کار کنه پیدا کنید. البته یک یا دو افزونه ی پولی برای TinyMCE 4 وجود داره ولی راه رایگان نه. (لااقل من پیدا نکردم!)

به همین جهت خودم دست به کار شدم و با روشی که در ادامه توضیح میدم تونستم آپلود عکس رو از طریق ASP.NET MVC5 برای TinyMCE 4.x انجام بدم.