پروژه ASP.Net Core MVC (وب و سی شارپ)
افزودن دیکشنری و تغییر زبان و عوض شدن محتوا داده
هدف اینه که مخاطب بفهمه فرق بین LanguageHelper و LanguageService چیه، کدوم برای چه شرایطی بهتره، و اینکه لزومی نداره هر دو رو همزمان داشته باشه.
---
🎯 تفاوت LanguageHelper و LanguageService در پروژههای چندزبانه MVC
در پروژههای چندزبانه، معمولاً نیاز داریم متنها رو بر اساس زبان انتخابشده توسط کاربر نمایش بدیم. برای این کار دو روش رایج وجود داره:
---
✅ ۱. LanguageHelper (کلاس استاتیک)
csharp
public static class LanguageHelper
{
public static string Translate(ApplicationDbContext context, IHttpContextAccessor httpContext, string key)
{
var culture = httpContext.HttpContext.Request.Cookies["lang"] ?? "fa";
var resource = context.LanguageResources
.FirstOrDefault(r => r.Key == key && r.Culture == culture);
return resource?.Value ?? key;
}
}
📌 ویژگیها:
- استاتیکه، یعنی نیازی به ساخت نمونه (instance) نداره
- در کنترلرها و کلاسها قابل استفادهست
- باید هر بار context و httpContext رو دستی بهش بدی
- در Razor View مستقیم قابل استفاده نیست (مگر با ViewBag یا ViewData)
---
✅ ۲. LanguageService (سرویس تزریقی)
csharp
public class LanguageService : ILanguageService
{
private readonly ApplicationDbContext _context;
private readonly IHttpContextAccessor _http;
public LanguageService(ApplicationDbContext context, IHttpContextAccessor http)
{
_context = context;
_http = http;
}
public string Translate(string key)
{
var culture = _http.HttpContext?.Request.Cookies["lang"] ?? "fa";
var value = _context.LanguageResources
.Where(x => x.Key == key && x.Culture == culture)
.Select(x => x.Value)
.FirstOrDefault();
return value ?? $"[{key}]";
}
}
📌 استفاده در Razor View:
razor @inject ILanguageService Lang <h1>@Lang.Translate("Dashboard.Title")</h1>📌 ویژگیها: - از طریق DI (Dependency Injection) تزریق میشه - در Razor View مستقیم قابل استفادهست - نیازی به ارسال دستی context و http نداره - قابل تست، توسعه و مدیریت بهتره --- ⚖️ مقایسه نهایی | ویژگی | LanguageHelper | LanguageService | |--------------------------|----------------|-----------------| | سادگی اولیه | ✅ ساده | ❌ کمی پیچیدهتر | | استفاده در View | ❌ سخت | ✅ راحت با @inject | | نیاز به DI | ❌ ندارد | ✅ دارد | | توسعهپذیری | ❌ محدود | ✅ قابل گسترش | | مناسب پروژههای بزرگ | ❌ نه | ✅ بله | --- ✅ کدام را انتخاب کنیم؟ 🔹 اگر پروژهات ساده است یا فقط در کنترلرها ترجمه نیاز داری → LanguageHelper کافیست 🔹 اگر پروژهات چندزبانه، قابل توسعه و حرفهای است → LanguageService بهتر و استانداردتر است ❗ لزومی نداره هر دو را همزمان داشته باشی فقط یکی را انتخاب کن و در کل پروژه از همان استفاده کن تا کدت تمیز و منسجم بماند.
SmartShopPlus (4).zip
حجم:
25.5M
ویرایش منو و اصلاح پروژه و حذف کدهای بی مصرف
SmartShopPlus (5).zip
حجم:
25.5M
اکشن های گزارش گیری با Join اضافه شد
📊 گزارشگیری حرفهای با EF Core و Join
در این پروژه، اکشنهای گزارشگیری با استفاده از کوئریهای بهینه و
Joinبین جدولها نوشته شدهاند تا عملکرد سریعتر و ساختار خواناتری داشته باشند. تمرکز بر تحلیل سفارشها، محصولات پرفروش و فعالیت مشتریان با رویکرد واقعی و قابل توسعه.
SecureLoginPlus Pro.zip
حجم:
18.9M
بچه ها من دو صفحه لاگین ساختم که یکی باید کتابخانه System.Speech را نصب کنی
1- 🔢 ورود با کد تصادفی و تایمر
2- 🧩 ورود با کپچای تصویری و صوتی
SecureLoginPlus Pro (2).zip
حجم:
18.9M
حذف کدهای اضافه در مدل
SecureProfilePlus.zip
حجم:
24.9M
پروژه SecureProfilePlus یک سیستم مدیریت پروفایل کاربری است که امکاناتی مثل ثبتنام و ورود کاربران، آپلود تصویر پروفایل، لایک تصاویر توسط کاربران لاگینشده، و نمایش مجموع لایکهای هر تصویر و هر کاربر را فراهم میکند. این پروژه با هدف تمرین عملی مفاهیم ASP.NET Core MVC، EF Core و طراحی رابط کاربری واکنشگرا توسعه یافته و بستری مناسب برای یادگیری و پیادهسازی قابلیتهای واقعی در پروژههای وب محسوب میشود.
SecureProfilePlus (2).zip
حجم:
25M
## ✅ توضیح کوتاه و فنی
با حذف
public string? ProfileImagePath { get; set; } از مدل Userو اجرای Migration: - ستون
ProfileImagePathاز جدول
Usersدر دیتابیس حذف شده
SecureProfilePlus (3).zip
حجم:
25M
تغییر کوچک ثبت نام برای رفع مشکل
SecureProfilePlus (4).zip
حجم:
25M
لایک رنگ سفید (لایک نشده) و قرمز(لایک شده) در صفحه اصلی
پروژه ASP.Net Core MVC (وب و سی شارپ)
لایک رنگ سفید (لایک نشده) و قرمز(لایک شده) در صفحه اصلی
کاملاً میتونی برای نمایش قلب سفید از SVG سفارشی یا کاراکترهای یونیکد (Alt+عدد) استفاده کنی — بستگی داره که چقدر کنترل روی ظاهر و رفتار بخوای داشته باشی. بیا با هم بررسی کنیم:
---
✅ گزینههای جایگزین برای قلب سفید
🔹 1. استفاده از کاراکتر یونیکد (Alt+عدد)
برای قلب سفید، میتونی از یونیکدهایی مثل این استفاده کنی:
| نماد | یونیکد | Alt Code | توضیح |
|------|--------|----------|-------|
| 🤍 | U+1F90D | Alt+129293 | قلب سفید (جدیدتر، در فونتهای مدرن) |
| ♡ | U+2661 | Alt+9825 | قلب توخالی کلاسیک |
| ♥ | U+2665 | Alt+9829 | قلب سیاه (قرمز در بیشتر فونتها) |
> اگر از ♡ استفاده کنی، ظاهرش شبیه قلب سفید هست ولی در برخی فونتها ممکنه خاکستری یا توخالی باشه.
---
🔹 2. استفاده از SVG سفارشی
اگر بخوای کنترل کامل روی ظاهر قلب داشته باشی (مثلاً رنگ، سایه، انیمیشن)، میتونی از SVG استفاده کنی:
html
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5
C2 5.42 4.42 3 7.5 3
C9.24 3 10.91 3.81 12 5.08
C13.09 3.81 14.76 3 16.5 3
C19.58 3 22 5.42 22 8.5
C22 12.28 18.6 15.36 13.45 19.54L12 21.35Z"
stroke="#999" fill="none" />
</svg>
> این قلب توخالیه و میتونی رنگ stroke یا fill رو تغییر بدی تا سفید یا خاکستری بشه.
---
🔹 3. ترکیب با Font Awesome یا آیکونهای دیگر
اگر از Font Awesome استفاده میکنی:
html <i class="fa-regular fa-heart"></i> <!-- قلب توخالی --> <i class="fa-solid fa-heart"></i> <!-- قلب پر (قرمز) -->> با تغییر کلاس میتونی قلب رو لایک یا آنلایک کنی. --- ✅ نتیجهگیری | روش | مزایا | معایب | |-----|-------|-------| | یونیکد (Alt+عدد) | ساده، بدون نیاز به فایل | محدود در ظاهر و فونت | | SVG سفارشی | کنترل کامل روی ظاهر | نیاز به کدنویسی بیشتر | | Font Awesome | راحت، قابل تغییر با کلاس | نیاز به کتابخانه خارجی |