در ادامه، ساختار کامل پروژهمون با معماری 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
همه خطا ها را برطرف کردم هر جا خطایی داشت و کار نمیکرد را به من پیام دهد
MyShop (13).zip
حجم:
41M
بیش از 9 عدد از هر اسلاید نمیتوانید محصول گذاشت این قابلیت برطرف شد
ساخت بلاگ با ASP_NET Core MVC.wav
حجم:
18.7M
ساخت وبلاگ با Asp.net Core MVC
ساخته شده از هوش مصنوعی
ASP_NET Core MVC و JavaScript.wav
حجم:
20.2M
Asp.Net Core MVC و جاوااسکریپت
ساخته شده از هوش مصنوعی
یک پروژه هم ساختم که دات نت با جاوااسکریپت را ببینید
ProductTimerApp.zip
حجم:
24.7M
مدیریت تایمر تخفیف محصولات