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
مشاهده در ایتا
دانلود
DateRecord.zip
حجم: 24.7M
پروژه کوچک برای نمایش تاریخ شمسی و میلادی
1.5M حجم رسانه بالاست
مشاهده در ایتا
این پروژه که ساختم نوع تاریخ ربطی به سیستم کامپیوتر ندارد
دات‌نت ۱۰، ویژوال استودیو ۲۰۲۶ و سی‌شارپ ۱۴ با تمرکز بر هوش مصنوعی، عملکرد بالا و قابلیت‌های مدرن عرضه شده‌اند. این نسخه‌ها جهشی بزرگ در تجربه توسعه‌دهندگان ایجاد کرده‌اند. در ادامه، مهم‌ترین ویژگی‌های هر کدام را مرور می‌کنیم: --- 🚀 دات‌نت ۱۰ (.NET 10) - نسخه LTS (پشتیبانی بلندمدت) تا نوامبر 2028. - ادغام عمیق با هوش مصنوعی برای توسعه اپلیکیشن‌های هوشمند. - پشتیبانی از زبان‌های C# 14 و F# 10 با قابلیت‌های جدید. - بهبود عملکرد و امنیت کوانتومی برای اپ‌های حساس و توزیع‌شده. - پیشرفت در ASP.NET Core، .NET MAUI و EF Core برای توسعه وب، موبایل و دیتابیس. --- 🧠 ویژوال استودیو ۲۰۲۶ (Visual Studio 2026) - بازطراحی رابط کاربری با Fluent UI و اضافه شدن 11 تم رنگی جدید. - ادغام کامل GitHub Copilot به‌عنوان دستیار هوشمند کدنویسی. - کاهش بیش از 50٪ توقف‌های رابط کاربری برای تجربه روان‌تر. - بیش از 300 قابلیت جدید و رفع 5000 باگ در نسخه نهایی. - افزایش سرعت و مدرن‌سازی محیط توسعه با تمرکز بر بهره‌وری. --- 🧩 سی‌شارپ ۱۴ (C# 14) - انتساب‌های ترکیبی سفارشی (User-Defined Compound Assignments): - امکان پیاده‌سازی بهینه‌تر عملگرهایی مثل += یا *=. - کاهش ساخت اشیاء غیرضروری در حافظه. - اعضای اکستنشن (Extension Members): - افزودن مستقیم ویژگی‌ها (Property)، اندیس‌گذارها (Indexer) و متدها به انواع موجود. - ساختار تمیزتر و قابل نگهداری‌تر نسبت به متدهای اکستنشن کلاسیک.
از این به بعد پروژه ها با دات نت ۸ و ۱۰ نوشته میشود پروژه های کوچک و مقدماتی با دو نسخه نوشته می شود و در پروژه متوسط و پیشرفته با دات نت ۱۰ نوشته می شود
PriceProject.zip
حجم: 23.6M
من فکرم را کردم و دیدم چون هنوز دات نت 8 پشتیبانی می شود من پروژه ساده قیمت و مجموع و میانگین را با ویژوال اتودیو 2026 و دات نت 8 نوشتم
RandomItems.zip
حجم: 23.6M
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
تا اینجا کدی که نوشتی فقط کاراکترهای منفرد رو از رشته‌ی
chars
انتخاب می‌کنه. یعنی خروجی همیشه ترکیبی از حروف یا اعداد جداگانه است. اگر بخوای به جای کاراکتر، کلمات کامل به صورت تصادفی انتخاب بشن، باید منبع داده‌ات (
chars
) رو تغییر بدی و به جای یک رشته، یک لیست یا آرایه از کلمات تعریف کنی. --- ## 🔹 نمونه کد برای انتخاب کلمات تصادفی
// مجموعه‌ای از کلمات
string[] words = { "سلام", "علیرضا", "محمد", "طاهـا", "پروژه", "کد" };

// تعداد کلمات تصادفی که می‌خوای بسازی
int length = 5;

// انتخاب تصادفی کلمات
string result = string.Join(" ", 
    Enumerable.Range(0, length)
              .Select(_ => words[_rnd.Next(words.Length)])
);
--- ## 🔹 توضیح خط به خط - string[] words → آرایه‌ای از کلمات تعریف می‌کنیم. - Enumerable.Range(0, length) → تعداد دفعات انتخاب (مثلاً ۵ بار). - Select(_ => words[_rnd.Next(words.Length)]) → هر بار یک کلمه‌ی تصادفی از آرایه انتخاب می‌کنه. - string.Join(" ", ...) → همه‌ی کلمات انتخاب‌شده رو با فاصله به هم وصل می‌کنه و یک رشته‌ی کامل می‌سازه. --- ## 🎯 خروجی نمونه اگر آرایه‌ی بالا باشه، خروجی می‌تونه چیزی مثل این باشه:
"محمد پروژه سلام علیرضا کد"
یا
"سلام طاهـا علیرضا پروژه محمد"
--- ## 🔹 فرق با حالت کاراکتر - در حالت قبلی: خروجی مثل
"سملاب"
(ترکیب کاراکترها). - در حالت جدید: خروجی مثل
"سلام علیرضا پروژه"
(ترکیب کلمات کامل).
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه تولید اعداد تصادف و ذخیره در دیتابیس دات نت 8
کد کامل پایه
csharp
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random _rnd = new Random();
int length = 6;

string result = new string(
    Enumerable.Range(0, length)
        .Select( => chars[rnd.Next(chars.Length)])
        .ToArray()
);
--- بخش‌های مقدماتی مجموعه کاراکترها
csharp
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- این رشته منبع انتخاب کاراکترهاست: حروف بزرگ انگلیسی + اعداد 0 تا 9. - هر بار یک کاراکتر از همین مجموعه انتخاب می‌کنیم، نه عدد و نه ایندکس؛ خودِ کاراکتر. مثال: - اگر chars = "ABC123" باشد، خروجی فقط از کاراکترهای A, B, C, 1, 2, 3 ساخته می‌شود. تولیدکننده تصادفی
csharp
Random _rnd = new Random();
- برای تولید ایندکس تصادفی و انتخاب «کاراکتر» از chars استفاده می‌شود. - هر فراخوانی Next(max) یک عدد تصادفی بین 0 و max-1 می‌دهد تا با آن یک کاراکتر از chars برداریم. مثال: - _rnd.Next(chars.Length) اگر 2 بدهد و chars = "ABC123" باشد، کاراکتر سوم یعنی C انتخاب می‌شود. طول رشته خروجی
csharp
int length = 6;
- مشخص می‌کند چند «کاراکتر» در خروجی داشته باشیم. - اگر length = 6 باشد، رشته خروجی دقیقاً 6 کاراکتر خواهد داشت. مثال: - length = 4 خروجی‌هایی مثل "A9B2" تولید می‌کند. --- ساخت رشته مرحله‌به‌مرحله شمارنده تکرار با Range
csharp
Enumerable.Range(0, length)
- یک دنباله از «ایندکس‌های تکرار» می‌سازد: از 0 تا length-1. - هدفش فقط تعیین تعداد دفعات انتخاب کاراکتر است؛ خودش کاراکتر تولید نمی‌کند. مثال: - Enumerable.Range(0, 3) خروجی: [0, 1, 2]. انتخاب کاراکتر تصادفی با Select
csharp
.Select( => chars[rnd.Next(chars.Length)])
- برای «هر تکرار»، یک کاراکتر تصادفی از chars انتخاب می‌کنیم. - عبارت chars[_rnd.Next(chars.Length)] یعنی: - یک ایندکس تصادفی معتبر تولید کن، - سپس «کاراکتر» متناظر از chars را بردار. مثال: - اگر chars = "ABC123" و طولش 6 باشد: - بار اول Next(6) ممکن است 2 بدهد → کاراکتر C. - بار دوم ممکن است 5 بدهد → کاراکتر 3. - خروجی Select چیزی مثل: ['C', 'A', '3', 'B', '1', 'C']. تبدیل به آرایه و رشته
csharp
.ToArray()
- دنباله کاراکترها را به char[] تبدیل می‌کند؛ برای ساخت رشته لازم است.
csharp
new string(charArray)
- آرایه کاراکترها را به یک رشته نهایی تبدیل می‌کند؛ مثلاً "CA3B1C". --- نکته مهم درباره نام پارامتر در Select چرا از _ استفاده می‌کنیم؟ - وقتی مقدار داخل Select استفاده نمی‌شود (فقط نقش «تکرار» دارد)، نام‌گذاری با _ قراردادی است و خوانایی را بالا می‌برد: یعنی «این ورودی مهم نیست». - اگر می‌خواهی واضح‌تر باشد، می‌توانی از i استفاده کنی. دو نسخه معادل:
csharp
// نسخه با _
Enumerable.Range(0, length)
    .Select( => chars[rnd.Next(chars.Length)])

// نسخه با i (خوانایی برای مبتدی‌ها)
Enumerable.Range(0, length)
    .Select(i => chars[_rnd.Next(chars.Length)])
در هر دو، «i» یا «_» خودش استفاده نمی‌شود؛ فقط تعداد دفعات Select را تعیین می‌کند. --- مثال‌های تکمیلی برای درک Range و Select مثال ۱: لیست اعداد پشت‌سرهم
csharp
var numbers = Enumerable.Range(0, 5).ToList();
// خروجی: [0, 1, 2, 3, 4]
- فقط نشان می‌دهد Range چطور «تعداد» می‌سازد. مثال ۲: ساخت برچسب‌های نمایشی
csharp
var labels = Enumerable.Range(0, 10)
                      .Select(i => $"آیتم شماره {i}")
                      .ToList();
// خروجی: ["آیتم شماره 0", ..., "آیتم شماره 9"]
- ترکیب Range با Select برای تبدیل ایندکس‌ها به «رشته‌های معنی‌دار». --- جمع‌بندی اجرایی - منبع کاراکترها را با chars تعریف می‌کنی. - با Random ایندکس تصادفی می‌سازی تا «کاراکتر» برداری. - length فقط تعداد کاراکترهای خروجی را مشخص می‌کند. - Enumerable.Range(0, length) تعداد تکرار را فراهم می‌کند. - Select در هر تکرار یک کاراکتر تصادفی از chars برمی‌دارد. - خروجی کاراکترها با ToArray جمع می‌شود و با new string(...) تبدیل به رشته نهایی می‌گردد. اگر بخواهی منتشر کنی، می‌توانیم همین متن را کمی کوتاه کنیم و در کنارش یک تابع تمیز ارائه بدهیم تا مخاطب بتواند مستقیم استفاده کند:
csharp
public static string GenerateRandomString(int length, string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", Random rnd = null)
{
    rnd ??= new Random();
    return new string(
        Enumerable.Range(0, length)
                  .Select(_ => chars[rnd.Next(chars.Length)])
                  .ToArray()
    );
}
ItemApp.zip
حجم: 23.6M
پروژه کوچک فعال و غیر فعال
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه کوچک فعال و غیر فعال
🔹 چرا نیازی به Update نداری؟ در EF Core وقتی با Find(id) یک رکورد رو از دیتابیس می‌گیری: - شیء برگردانده شده به صورت Tracked (ردیابی‌شده) داخل DbContext نگه‌داری می‌شه. - یعنی EF Core تغییرات روی اون شیء رو خودش تشخیص می‌ده. - وقتی مقدار یک خاصیت مثل item.Name یا item.IsActive رو تغییر بدی، EF Core این تغییر رو ثبت می‌کنه. - با صدا زدن SaveChanges()، EF Core تغییرات رو به دیتابیس اعمال می‌کنه. 📌 بنابراین نیازی به نوشتن Update(item) نداری. چون شیء از قبل به کانتکست وصل شده و تغییراتش ردیابی می‌شه. --- 🔹 توضیح در مورد ModelState - ModelState وضعیت اعتبارسنجی داده‌های ورودی رو نگه می‌داره. - وقتی شما پارامترهایی مثل string name یا یک ViewModel رو به اکشن می‌فرستی، ASP.NET Core بررسی می‌کنه که آیا داده‌ها با قوانین اعتبارسنجی (Validation Attributes) سازگار هستند یا نه. - اگر هیچ Attribute مثل [Required] یا [StringLength] تعریف نکرده باشی، ModelState.IsValid همیشه true خواهد بود. - در کدی که نوشتی، چون فقط string name می‌گیری و هیچ اعتبارسنجی نداری، خطایی رخ نمی‌ده و شرط همیشه درست خواهد بود. 📌 اگر بخوای خطاها رو مدیریت کنی (مثلاً نام خالی نباشه)، می‌تونی یا: - از Attribute روی مدل استفاده کنی:
csharp
  public class Item {
      [Required(ErrorMessage = "نام الزامی است")]
      public string Name { get; set; }
      public bool IsActive { get; set; }
  }
  
- یا در اکشن شرط بذاری:
csharp
  if (string.IsNullOrWhiteSpace(name)) {
      ModelState.AddModelError("Name", "نام الزامی است");
      return View();
  }
  
--- 🔹 چرا خطا نداری؟ - چون همه‌ی اکشن‌ها ساده هستند و فقط با id یا name کار می‌کنند. - EF Core تغییرات رو خودش مدیریت می‌کنه. - ModelState.IsValid بدون اعتبارسنجی همیشه true هست. - بنابراین کد اجرا می‌شه و خطایی نداری. --- 🎯 جمع‌بندی - نیازی به Update نداری چون شیء با Find ردیابی می‌شه و تغییراتش خودکار ذخیره می‌شن. - ModelState.IsValid در حالت فعلی همیشه true هست چون اعتبارسنجی تعریف نکردی. - خطا نداری چون ورودی‌ها ساده هستند و EF Core تغییرات رو درست مدیریت می‌کنه.
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه کوچک فعال و غیر فعال
🔹 حالت اول: اکشن Edit با مدل کامل مثال:
csharp
[HttpPost]
public IActionResult Edit(Item model)
{
    if (!ModelState.IsValid)
        return View(model);

    var item = _db.Items.Find(model.Id);
    if (item != null)
    {
        item.Name = model.Name;
        _db.SaveChanges();
    }
    return RedirectToAction("Index");
}
- اینجا نیازی به Update(item) نیست. - چرا؟ چون رکورد با Find گرفته شده و EF Core آن را Tracked کرده است. تغییر مستقیم روی item.Name کافی است. --- 🔹 حالت دوم: اکشن Edit با پارامترهای جدا (id و name) مثال:
csharp
[HttpPost]
public IActionResult Edit(int id, string name)
{
    var item = _db.Items.Find(id);
    if (item != null)
    {
        item.Name = name;
        _db.SaveChanges();
    }
    return RedirectToAction("Index");
}
- باز هم نیازی به Update(item) نیست. - چون شیء با Find گرفته شده و EF Core تغییرات را دنبال می‌کند. --- 🔹 حالت سوم: اکشن Edit با مدل پاس داده شده ولی بدون Find مثال:
csharp
[HttpPost]
public IActionResult Edit(Item model)
{
    _db.Items.Update(model);
    _db.SaveChanges();
    return RedirectToAction("Index");
}
- اینجا نیاز به Update داری. - چرا؟ چون شیء model را خودت از فرم گرفتی و EF Core آن را از دیتابیس نیاورده، پس Tracked نیست. - باید با Update(model) به EF Core بگویی که این شیء تغییر کرده است. --- 🎯 جمع‌بندی - اگر رکورد را با Find(id) یا FirstOrDefault از دیتابیس بگیری → نیازی به Update نداری، چون EF Core تغییرات را دنبال می‌کند. - اگر رکورد را مستقیم از فرم (مدل پاس داده شده) بگیری و دوباره به دیتابیس وصل نکنی → نیاز به Update داری. - پس در پروژه‌های ساده مثل پنجم و ششم، وقتی از Find استفاده می‌کنی، نیازی به Update نیست.