eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
377 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
تقویم شمسی.zip
حجم: 6.9K
تقویم شمسی ساخته شده از هوش مصنوعی
لاغر_کردن_کنترلرهای_ASP.Net Core.mp3
زمان: حجم: 4.7M
لاغر کردن کنترلر در ASP.Net Core MVC ساخته شده از هوش مصنوعی این متن در قالب یک پادکست آموزشی، به بررسی چالش شلوغی بیش از حد کنترلرها در برنامه‌نویسی ASP.NET Core و راهکارهای رفع آن می‌پردازد. محتوا با استفاده از شباهت‌سازی‌های ملموس مانند مدیریت رستوران و هتل، شش روش کلیدی شامل لایه سرویس، الگوی مدیاتور، ارکستریتور، معماری تمیز، CQRS و فیلترها را برای جداسازی منطق برنامه‌نویسی توضیح می‌دهد. هر یک از این رویکردها با هدف افزایش نظم، تست‌پذیری و نگهداری آسان‌تر کد معرفی شده‌اند تا از تبدیل شدن کنترلرها به واحدهای پیچیده و غیرقابل کنترل جلوگیری شود. در نهایت، منبع تأکید می‌کند که انتخاب هر روش باید بر اساس مقیاس و نیاز اختصاصی پروژه صورت گیرد. این راهنما به توسعه‌دهندگان کمک می‌کند تا با توزیع درست مسئولیت‌ها، ساختار نرم‌افزار خود را بهینه‌سازی کنند.
MyChartShop.zip
حجم: 16.2M
پروژه نمودار حرفه ای ترکیب سی شارپ و جاوااسکریپت
// ۲. داده‌های نمودار قیمت (گرید ۵ تایی) var priceChartData = products .Where(p => p.IsActive) // فقط محصولات فعال .OrderByDescending(p => p.Price) .Take(10) // ۱۰ محصول گران‌قیمت .Select(p => new ChartData { Label = p.Name.Length > 15 ? p.Name.Substring(0, 15) + "..." : p.Name, Value = p.Price, Color = GetRandomColor() }) .ToList(); ## ✅ توضیح کد نمودار قیمت این کد برای نمودار قیمت محصولات در داشبورد استفاده میشه. بیایم خط به خط بررسی کنیم: --- ## 📊 هدف کد: نمایش ۱۰ محصول گران‌قیمت (فقط محصولات فعال) در نمودار --- ## 🔍 توضیح خط به خط: ### ۱. فیلتر محصولات فعال
.Where(p => p.IsActive)
- فقط محصولاتی که فعال هستند (IsActive = true) انتخاب میشن - محصولات غیرفعال تو نمودار نمیان ### ۲. مرتب‌سازی نزولی بر اساس قیمت
.OrderByDescending(p => p.Price)
- محصولات از گران‌ترین به ارزان‌ترین مرتب میشن ### ۳. گرفتن ۱۰ محصول اول
.Take(10)
- فقط ۱۰ محصول اول (گران‌ترین‌ها) انتخاب میشن ### ۴. تبدیل به داده‌های نمودار
.Select(p => new ChartData
{
    Label = p.Name.Length > 15 ? p.Name.Substring(0, 15) + "..." : p.Name,
    Value = p.Price,
    Color = GetRandomColor()
})
- Label: نام محصول (اگه بیش از ۱۵ کاراکتر باشه، برش می‌خوره و ... اضافه میشه) - Value: قیمت محصول - Color: یه رنگ تصادفی برای نمایش در نمودار ### ۵. تبدیل به لیست
.ToList()
- نهایتاً به لیست تبدیل میشه --- ## 📋 خروجی نمونه: فرض کنیم این محصولات رو داریم: | نام محصول | قیمت | فعال | |-----------|------|------| | لپ‌تاپ ایسوس با مشخصات ویژه | ۱۵,۰۰۰,۰۰۰ | ✅ | | گوشی سامسونگ اس۲۳ اولترا | ۱۲,۰۰۰,۰۰۰ | ✅ | | تبلت اپل آیپد پرو | ۱۰,۰۰۰,۰۰۰ | ❌ | | مانیتور گیمینگ ۲۴ اینچ | ۸,۰۰۰,۰۰۰ | ✅ | خروجی کد:
[
    {
        "Label": "لپ‌تاپ ایسوس با...",  // برش خورده
        "Value": 15000000,
        "Color": ""
    },
    {
        "Label": "گوشی سامسونگ اس...",
        "Value": 12000000,
        "Color": ""
    },
    {
        "Label": "مانیتور گیمینگ...",
        "Value": 8000000,
        "Color": ""
    }
]
--- ## 🎯 دلیل این طراحی: 1. فقط محصولات فعال: محصولات غیرفعال نباید تو آمار بیان 2. ۱۰ محصول گران‌قیمت: مهم‌ترین محصولات از نظر ارزش 3. برش نام‌های طولانی: برای نمایش بهتر در نمودار 4. رنگ تصادفی: برای تفکیک visually در نمودار --- ## 📊 نمودار نهایی: این داده‌ها به Chart.js داده میشه و یه نمودار میله‌ای (Bar Chart) با این مشخصات می‌سازه: - محور افقی: نام محصولات - محور عمودی: قیمت (تومان) - هر محصول: یک ستون با رنگ متفاوت --- حالا فهمیدی چرا اینجوری نوشته شده؟ 🚀
## ✅ آموزش جامع Select در LINQ
Select
یکی از مهم‌ترین و پرکاربردترین متدهای LINQ هست. بیا کامل یادش بگیریم: --- ## 📚 فهرست مطالب: 1. Select چیست؟ 2. تفاوت Select و Where 3. انواع Select 4. Select با اشیاء ناشناس (Anonymous) 5. Select با ایندکس 6. SelectMany (تودرتو) 7. مثال‌های واقعی از پروژه‌های MVC --- ## ۱. 🔍 Select چیست؟
Select
مثل دستگاه تبدیل می‌مونه. ورودی می‌گیره، تبدیل می‌کنه، خروجی می‌ده.
// فرض کن این لیست رو داری
List<string> names = new List<string> { "علی", "رضا", "سارا" };

// می‌خوای همه رو به حروف بزرگ تبدیل کنی
var upperNames = names.Select(n => n.ToUpper()).ToList();
// خروجی: ["علی", "رضا", "سارا"] -> ["علی", "رضا", "سارا"]
--- ## ۲. 🔍 تفاوت Select و Where | متد | کاربرد | مثال | |-----|--------|------| | Where | فیلتر کردن (تعداد کم یا زیاد میشه) | products.Where(p => p.Price > 1000) | | Select | تبدیل کردن (تعداد ثابت می‌مونه) | products.Select(p => p.Name) |
var products = GetProducts();

// Where: تعداد کم میشه (فقط گرون‌ها)
var expensiveProducts = products.Where(p => p.Price > 1000000);

// Select: تعداد ثابت، فرم تغییر می‌کنه
var productNames = products.Select(p => p.Name);
var productPrices = products.Select(p => p.Price);
--- ## ۳. 🎯 انواع Select ### نوع ۱: انتخاب یک Property
// فقط نام محصولات
var names = products.Select(p => p.Name).ToList();

// فقط قیمت‌ها
var prices = products.Select(p => p.Price).ToList();
### نوع ۲: تبدیل به نوع دیگر
// تبدیل Product به string
var productInfo = products.Select(p => $"{p.Name} - {p.Price} تومان").ToList();

// تبدیل Product به یک کلاس دیگر
var productViewModels = products.Select(p => new ProductViewModel
{
    ProductName = p.Name,
    DisplayPrice = p.Price.ToString("N0") + " تومان"
}).ToList();
### نوع ۳: محاسبات روی داده
// قیمت با تخفیف
var discountedPrices = products.Select(p => new
{
    p.Name,
    OriginalPrice = p.Price,
    DiscountedPrice = p.Price * 0.9m,  // ۱۰٪ تخفیف
    Tax = p.Price * 0.09m
}).ToList();
--- ## ۴. 📦 Select با اشیاء ناشناس (Anonymous) اینجا بود که کد قبلی رو نوشتیم:
var priceChartData = products
    .Where(p => p.IsActive)
    .OrderByDescending(p => p.Price)
    .Take(10)
    .Select(p => new  // اینجا شیء ناشناس می‌سازیم
    {
        Label = p.Name.Length > 15 ? p.Name.Substring(0, 15) + "..." : p.Name,
        Value = p.Price,
        Color = GetRandomColor()
    })
    .ToList();
چرا شیء ناشناس؟ چون برای نمودار فقط به این ۳ تا فیلد نیاز داریم، نه کل Product. --- ## ۵. 🔢 Select با ایندکس می‌تونیم به شماره آیتم هم دسترسی داشته باشیم:
var productsWithIndex = products.Select((p, index) => new
{
    RowNumber = index + 1,  // شماره ردیف
    p.Name,
    p.Price
}).ToList();

// خروجی:
// { RowNumber = 1, Name = "لپ‌تاپ", Price = 15000000 }
// { RowNumber = 2, Name = "موبایل", Price = 8000000 }
--- ## ۶. 🔗 SelectMany (تودرتو) برای لیست‌های تو در تو:
// فرض کن هر Category چندتا Product داره
public class Category
{
    public string Name { get; set; }
    public List<Product> Products { get; set; }
}

var categories = GetCategories();

// با Select معمولی: می‌شه لیست لیست‌ها
var allProductsList = categories.Select(c => c.Products).ToList();
// خروجی: List<List<Product>>

// با SelectMany: همه محصولات رو یه دونه می‌کنه
var allProducts = categories.SelectMany(c => c.Products).ToList();
// خروجی: List<Product>
--- ## ۷. 💡 مثال‌های واقعی از پروژه MVC ### مثال ۱: برای Dropdown
// تبدیل محصولات به آیتم‌های dropdown
ViewBag.Products = products.Select(p => new SelectListItem
{
    Value = p.Id.ToString(),
    Text = p.Name
}).ToList();
### مثال ۲: برای جدول با فرمت خاص
var tableData = products.Select(p => new
{
    p.Id,
    PersianDate = p.CreatedAt.ToPersianDate(),
    PriceWithCurrency = p.Price.ToString("N0") + " تومان",
    StatusText = p.IsActive ? "فعال" : "غیرفعال",
    StatusClass = p.IsActive ? "success" : "secondary"
}).ToList();
### مثال ۳: برای نمودار (همون کد خودمون)
var chartData = products
    .Where(p => p.IsActive)
    .OrderByDescending(p => p.Price)
    .Take(10)
    .Select(p => new ChartData
    {
        Label = p.Name.Length > 15 ? p.Name.Substring(0, 15) + "..." : p.Name,
        Value = p.Price,
        Color = GetRandomColor()
    })
    .ToList();
--- ## ۸. ⚡️ Select با شرط (Ternary Operator)
var productDisplay = products.Select(p => new
{
    p.Name,
    PriceCategory = p.Price > 1000000 ? "گران" :
                    p.Price > 500000 ? "متوسط" : "ارزان",
    StatusIcon = p.IsActive ? "✅" : "❌",
    StockStatus = p.Stock > 0 ? "موجود" : "ناموجود"
}).ToList();
--- ## ۹. 🎯 Select با چندین شرط
var productAnalysis = products.Select(p => new
{
    p.Name,
    p.Price,
    
    // دسته‌بندی قیمت
    PriceRange = p.Price switch
    {
        > 1000000 => "گران",
        > 500000 => "متوسط",
        > 0 => "ارزان",
        _ => "رایگان"
    },
    
    // وضعیت نمایشی
    DisplayStatus = p.IsActive 
        ? $"<span class='badge bg-success'>{p.Name} فعال</span>" 
        : $"<span class='badge bg-secondary'>{p.Name} غیرفعال</span>",
        
    // محاسبات
    FinalPrice = p.Price * (p.IsActive ? 1 : 0.8m)  // تخفیف برای غیرفعال‌ها
}).ToList();
--- ## ۱۰. 📊 خلاصه و مقایسه | سناریو | کد | خروجی | |--------|-----|--------| | فقط نام‌ها |
Select(p => p.Name)
|
["لپ‌تاپ", "موبایل"]
| | شیء جدید |
Select(p => new { p.Name, p.Price })
|
[{ Name="لپ‌تاپ", Price=15000 }]
| | با ایندکس |
Select((p,i) => new { Row=i+1, p.Name })
|
[{ Row=1, Name="لپ‌تاپ" }]
| | محاسباتی |
Select(p => p.Price * 0.9)
|
[13500, 7200]
| | شرطی |
Select(p => p.IsActive ? "فعال" : "غیرفعال")
|
["فعال", "غیرفعال"]
| --- ## ✅ نکات طلایی Select: 1. تعداد آیتم‌ها عوض نمی‌شه (برخلاف Where) 2. نوع خروجی می‌تونه متفاوت باشه 3. برای تبدیل داده به فرمت دیگه عالیه 4. می‌تونی Property‌های محاسباتی بسازی 5. در EF Core به SQL بهینه تبدیل می‌شه --- حالا Select برات واضح شد؟ 🚀
MyValidationShop.zip
حجم: 16.1M
پروژه اعتبار سنجی سمت سرور و کلاینت
MyPartialShop.zip
حجم: 16M
پروژه MyPartialShop یک فروشگاه اینترنتی ساده با ASP.NET Core MVC است که از Partial View برای افزایش قابلیت استفاده مجدد کد استفاده می‌کند.