eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
119 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
Lang.zip
حجم: 18.5M
پروژه دو زبان فارسی و انگلیسی که زبان از طریق کوکی ذخیره می شود
6.4M حجم رسانه بالاست
مشاهده در ایتا
آموزش ایجاد جدول فایل Resource.resx یادت باشد برای نام گذاری Views.Home.Index.en و پوشه Resources که به صورت زیر باشد Resources/Views.{Controller}.{View}.{culture}.resx اگر در نام گذاری اشتباه باشد نمیتوانید پروژه را چند زبان قرار دهید
توی پروژه‌های چندزبانه مثل اون چیزی که داری با ASP.NET Core MVC می‌سازی، Culture به معنی فرهنگ یا زبان-کشور کاربره. دقیق‌تر بگم: ✅ تعریف Culture در برنامه‌نویسی 🔹 Culture یعنی مجموعه‌ای از تنظیمات مرتبط با زبان، کشور و فرمت‌های محلی، مثل: | مورد | نمونه مقدار | | زبان | en یا fa | | کشور | US, IR | | تاریخ | MM/dd/yyyy یا yyyy/MM/dd | | اعداد | 1,000.50 یا ۱٬۰۰۰٫۵۰ | | واحد پول | $, ﷼ | مثلاً: - "en-US" = انگلیسی - آمریکا - "fa-IR" = فارسی - ایران در ASP.NET Core، این‌ها با کلاس CultureInfo مدیریت می‌شن. ✅ تفاوت Culture و UICulture | مورد | نقش | | Culture | فرمت‌های محلی مثل اعداد، تاریخ | | UICulture | زبان واسط کاربر (مترجم فایل‌های .resx) | معمولاً برای سایتی که زبان و نمایش هم مهمه، هر دو تنظیم می‌شن: Thread.CurrentThread.CurrentCulture = new CultureInfo("fa-IR"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("fa-IR"); 🎯 کاربرد در پروژه تو - با تنظیم Culture، مثلاً تاریخ‌ها در فرم تماس به‌شکل ۱۴۰۴/۰۴/۱۳ نمایش داده می‌شن. - با تنظیم UICulture، ترجمه از فایل‌های .resx انجام می‌شه (مثل ارتباط با ما به جای Contact Us).
در پروژه‌های چندزبانه ASP.NET Core MVC، نام‌گذاری فایل‌های .resx بسیار مهمه تا سیستم بتونه ترجمه‌ی درست رو برای View یا کلاس مربوطه تشخیص بده. بیا با هم ساختار حرفه‌ای و دقیقش رو یاد بگیریم: ✅ انواع Resource و الگوی نام‌گذاری 1. فایل‌های مخصوص View‌ها (View-specific Resources) برای ترجمه Viewها باید فایل‌ها رو طبق این الگو نام‌گذاری کنی: Resources/Views.{Controller}.{View}.{culture}.resx مثال‌ها: | View | زبان فارسی | زبان انگلیسی | | Index.cshtml | Views.Home.Index.fa.resx | Views.Home.Index.en.resx | | Contact.cshtml | Views.Home.Contact.fa.resx | Views.Home.Contact.en.resx | حتماً پوشه Resources رو در ریشه‌ی پروژه قرار بده، نه داخل Views 2. فایل‌های عمومی (Shared Resources) برای ترجمه‌هایی که بین چند View یا کنترلر مشترکه، فایل‌هایی مثل زیر بساز: Resources/SharedResources.fa.resx Resources/SharedResources.en.resx در Program.cs باید از IStringLocalizer<SharedResources> استفاده کنی تا این فایل‌ها خونده بشن. 3. فایل‌های ترجمه برای کلاس‌ها یا مدل‌ها اگر بخوای اعتبارسنجی یا متون سیستم رو ترجمه‌پذیر کنی، فایل‌ها باید با اسم کامل کلاس باشن: مثلاً برای کلاس ContactModel.cs: Resources/Models.ContactModel.fa.resx Resources/Models.ContactModel.en.resx البته برای این مورد از IStringLocalizer<ContactModel> استفاده می‌کنی. 🧠 نکته تکمیلی در Program.cs باید این تنظیم باشه تا مسیر Resourceها درست شناسایی بشه: builder.Services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
در ادامه، ساختار کامل پروژه‌مون با معماری ASP.NET Core 8 MVC، دو‌زبانه، فرم ارتباط با ما، نمایش نتایج فرم، و تم دارک/لایت/سیستم رو برات می‌نویسم. این ساختار تمیز و قابل توسعه‌ست که بتونی راحت مدیریت کنی. --- 🧱 ساختار پوشه‌ها و فایل‌ها
MyLangProject/
├── Controllers/
│   └── HomeController.cs
├── Views/
│   └── Home/
│       ├── Index.cshtml
│       ├── Contact.cshtml
│       └── Result.cshtml
│   └── Shared/
│       └── _Layout.cshtml
├── Resources/
│   ├── Views.Home.Index.en.resx
│   ├── Views.Home.Index.fa.resx
│   ├── Views.Home.Contact.en.resx
│   ├── Views.Home.Contact.fa.resx
│   ├── Views.Home.Result.en.resx
│   ├── Views.Home.Result.fa.resx
│   └── Views.Shared._Layout.en.resx
│   └── Views.Shared._Layout.fa.resx
├── wwwroot/
│   ├── css/
│   │   └── site.css
│   └── js/
│       └── theme.js
├── Program.cs
└── appsettings.json
--- 💬 خلاصه نقش هر بخش فایل / پوشه توضیح کاربرد Controllers/HomeController.cs اکشن‌های مربوط به صفحات، فرم ارتباط و تغییر زبان Views/Home/*.cshtml صفحه اصلی، فرم ارتباط، و صفحه نمایش نتایج فرم Views/Shared/_Layout.cshtml قالب مشترک صفحات شامل منو، Dropdown زبان و تم، و <title> چندزبانه Resources/*.resx ترجمه‌های متن‌های ثابت برای هر View و Layout wwwroot/css/site.css استایل‌های تم دارک / لایت wwwroot/js/theme.js کد JavaScript برای تشخیص تم مرورگر، انتخاب دستی تم، و ذخیره در کوکی Program.cs تنظیمات پروژه، localization، مسیریابی، و middleware appsettings.json تنظیمات عمومی پروژه (مثلاً پیکربندی‌ها و اتصال‌ها در صورت نیاز)
آموزش پیاده سازی پنل پیامکی کاوه نگار در ASP.NET Core https://toplearn.com/c/5784
MyShop (10).zip
حجم: 40.9M
ادامه درس باگتو، اسلاید ها هم زمان همه تصاویر می آمد حالا درست کردم هر اسلاید مربوطه خودش میاد
MyShop (11).zip
حجم: 40.9M
## 🧨 علت خطا چی بود؟ در خط اولیه جاوااسکریپت: javascript const endTime = new Date('@Model.DiscountEndTime.Value.ToString("yyyy-MM-ddTHH:mm:ss")'); اگر
DiscountEndTime
مقدار نداشت (یعنی
null
بود)، Razor سعی می‌کرد
Value
رو بخونه و چون مقدار نداشت، خطای
Nullable object must have a value
می‌داد—even قبل از اینکه جاوااسکریپت اجرا بشه. --- ## ✅ چه کار کردی که درست شد؟ تو خیلی هوشمندانه نوشتی: javascript const endTime = new Date('@Model.DiscountEndTime'); در این حالت، اگر
DiscountEndTime
مقدار داشته باشه، Razor اون رو به صورت رشته وارد می‌کنه (مثلاً:
2025/07/07 17:00:00
) اگر
null
باشه، Razor فقط مقدار خالی وارد می‌کنه (
""
) و در جاوااسکریپت: javascript new Date("") // خروجی: Invalid Date (ولی بدون خطا) یعنی با اینکه تاریخ نامعتبره، دیگه خطای Razor نمی‌گیری 😁 --- ## 🔐 نتیجه خطا از Razor بود—not جاوااسکریپت. با حذف `.Value.ToString(...)`، اجازه دادی Razor خودش مقدار رو به‌صورت امن رندر کنه، و همین باعث شد مشکلت حل بشه.
در اسلاید دایره‌های Indicators داخل اسلایدر (کلاس <li>) با box-shadow زیباتر دیده بشن، می‌تونی به‌صورت Inline CSS به ol.carousel-indicators بدی، یا بهتر به هر <li> به‌صورت style جداگانه. و در پنل کاربری و محصولات و اطلاعات بیشتر خطا داشتم که وقتی مقدار زمان باقیانده نداشته باشم و حالا برطرف شد
MyShop (12).zip
حجم: 41M
همه خطا ها را برطرف کردم هر جا خطایی داشت و کار نمیکرد را به من پیام دهد