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
مشاهده در ایتا
دانلود
پروژه ASP.Net Core MVC (وب و سی شارپ)
حذف @functions و آوردن تابع کمکی در کنترلر order
اگه همه منطق‌ها رو در یک کلاس مشترک قرار بدی و هم در اکشن GET و هم در POST صدا بزنی، این کار کاملاً قابل قبول و رایج هست — مخصوصاً در مراحل ابتدایی جداسازی منطق از کنترلر. --- ✅ مزایای کلاس مشترک برای GET و POST - کاهش تکرار کد: مثلاً تابع LoadFormData() یا GetStatusList() فقط یک‌بار نوشته می‌شه - افزایش خوانایی کنترلر: کنترلر فقط صدا می‌زنه، خودش درگیر جزئیات نیست - آمادگی برای جداسازی بیشتر: بعداً می‌تونی همین کلاس رو به سرویس یا لایه‌های CQRS تبدیل کنی - تست‌پذیری بهتر: کلاس جدا راحت‌تر تست می‌شه نسبت به کد داخل کنترلر --- ⚠️ نکته مهم اگر کلاس مشترک خیلی بزرگ بشه و هم منطق خواندن (GET) و هم منطق نوشتن (POST) رو با هم نگه داره، ممکنه: - وابستگی زیاد بین متدها ایجاد بشه - تست‌پذیری سخت‌تر بشه - اصل Single Responsibility نقض بشه --- ✅ راه‌حل حرفه‌ای‌تر در آینده وقتی آماده شدی برای معماری تمیز‌تر، می‌تونی: - کلاس رو به دو بخش تقسیم کنی: - OrderQueryService برای GET - OrderCommandService برای POST یا حتی با CQRS: - EditOrderQueryHandler برای گرفتن اطلاعات - EditOrderCommandHandler برای ذخیره تغییرات --- 🎯 نتیجه الان که در مرحله توسعه هستی، کلاس مشترک کاملاً خوبه و منطقیه. بعداً که پروژه بزرگ‌تر شد، می‌تونی با تقسیم وظایف و CQRS ساختار حرفه‌ای‌تری بسازی.
SmartShopPlus.zip
حجم: 25.3M
ترکیب سه پروژه قبل به یک پروژه + زبان نکته : پروژه در ظاهر اول نگاه کنی ظاهر خوبی ندارد ولی پروژه فقط برای آموزش ساخته شده و اگر کامل نیست خودتون کامل کنید مخصوصا زبان که فقط یک کلمه را ترجمه می کند و کل سایت را خودتون ترجمه و @inject SmartShopPlus.Service.ILanguageService Lang در بالای ویو <h1>@Lang.Translate("Dashboard.Title")</h1> در همه جا قرار دهید و ترجمه کنید
SmartShopPlus (3).zip
حجم: 25.5M
افزودن دیکشنری و تغییر زبان و عوض شدن محتوا داده
پروژه 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- 🧩 ورود با کپچای تصویری و صوتی