رفع مشکل اعداد فارسی در Asp.net Core هنگام ورود اطلاعات
با سلام خدمت تمامی اساتید عزیز
یه پروژه با mvc core 3 نوشتم
در فرم لاگین :
نام کاربری و پسورد که وارد میکنم حتما پسورد باید انگلیسی وارد شود
وقتی فارسی وارد میکنم اجازه ورود نمیده و خطا میده
پروژه رو هاست هست با موبایل لاگین میشم ارقام فارسی وارد کنم خطا میده
اساتید گرامی برای این مشکل راه حلی وجود دارد ؟ ممنون میشم راهنماییم کنید
پاسخ هوش مصنوعی
برای رفع مشکل ورود اعداد فارسی در ASP.NET Core، می توانید مراحل زیر را دنبال کنید:
1. **تنظیمات در مدل:** اطمینان حاصل کنید که مدل شما قادر به پردازش متن به زبان های مختلف باشد. از نوع `string` برای ورودی ها استفاده نمایید.
2. **فرمتینگ ورودی:** در سمت کلاینت، می توانید قبل از ارسال داده ها به سرور، مطمین شوید که ورودی ها به زبان و فرمت صحیح تبدیل شوند. برای این کار می توانید از JavaScript استفاده کنید.
کد جاوا اسکریپت برای تبدیل اعداد فارسی به انگلیسی:
function convertToEnglishNumbers(input) {
const persianToEnglishNumbers = {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
};
return input.split('').map(char => persianToEnglishNumbers[char] || char).join('');
}
document.getElementById('yourInputField').addEventListener('input', function(event) {
this.value = convertToEnglishNumbers(this.value);
});
3. **تنظیمات در سرور:** در صورتی که نیاز دارید در سمت سرور نیز این اعداد را پردازش کنید، می توانید حین دریافت اطلاعات از کاربر، آن ها را تبدیل کنید. در کنترلر می توانید از متد زیر استفاده کنید:
public string ConvertPersianToEnglish(string input) {
var conversions = new Dictionary {
{ '0', '0' }, { '1', '1' }, { '2', '2' }, { '3', '3' },
{ '4', '4' }, { '5', '5' }, { '6', '6' }, { '7', '7' },
{ '8', '8' }, { '9', '9' }
};
return new string(input.Select(c => conversions.ContainsKey(c) ? conversions[c] : c).ToArray());
}
با این رویکردها، می توانید از ورود اعداد فارسی جلوگیری کرده و مطمین شوید که فقط اعداد انگلیسی به سرور ارسال می شوند.
اطلاعات شما در دیتابیس به صورت انگلیسی ذخیره شده احتمالا. اعداد به صورت فارسی و انگلیسی از نظر Unicode و باینری تفاوتهایی دارن. شما بهتره یک استاندارد برای پروژه خودتون داشته باشید. راه حل صحیح این هست که همه اعداد رو در هر جایی تبدیل به انگلیسی کنید و بعد به سمت سرور یا دیتابیس بفرستید. یعنی وقتی کاربری اعدادی رو وارد می کنه قبل از اینکه عملیاتی روی این اعداد انجام بشه اونها رو به انگلیسی تبدیل کنید و بعد به سمت دیتابیس بفرستید.
برای این منظور از تابع زیر که وظیفه تبدیل اعداد فارسی به انگلیسی داره استفاده کنید.
public static class ConvertArabicNumberToEnglish
{
public static string toEnglishNumber(string input)
{
string EnglishNumbers = "";
for (int i = 0; i < input.Length; i++)
{
if (Char.IsDigit(input[i]))
{
EnglishNumbers += char.GetNumericValue(input, i);
}
else
{
EnglishNumbers += input[i].ToString();
}
}
return EnglishNumbers;
}
}
نحوه استفاده از این تابع
ConvertArabicNumberToEnglish.toEnglishNumber("٠٩٩٠٢١٢");
//خروجی
0990212
در این لینک هم قبلا این سوال پرسیده شده بود و پاسخ داشت.
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- چرا استوری های واتس اپ برای دوستان نمایش داده نمیشن ؟
- چند تا استوری رایگان می تونیم تلگرام بذاریم ؟
- خطای Severity Code Description Project هنگام استارت پروژه
- کار نکردن navBar و sideBar در پروژه Asp.net core
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2