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
مشاهده در ایتا
دانلود
AjaxApp.zip
حجم: 2.5M
کد ساده که با حداقل جاوااسکریپت داده های صفحه اصلی با عوض کردن لیست باکس بدونه رفرش عوض می شود
پروژه ASP.Net Core MVC (وب و سی شارپ)
کد ساده که با حداقل جاوااسکریپت داده های صفحه اصلی با عوض کردن لیست باکس بدونه رفرش عوض می شود
🚀 پروژه مدیریت هوشمند جداول با AJAX و Partial View* 🚀 سلام دوستان! امروز می‌خوایم بررسی کنیم که چطور می‌شه یک صفحه وب رو بدون حتی یک بار رفرش شدن، کاملاً زنده و پویا کرد! 💻✨ 🎯 هدف پروژه چیه؟ دیگه گذشت اون زمان که برای دیدن داده‌های جدید باید کل صفحه سایت از اول لود می‌شد! 🐢 در این پروژه، ما یاد می‌گیریم چطور با انتخاب یک گزینه، فقط و فقط "قلب جدول" رو آپدیت کنیم. یعنی سرعت موشکی و تجربه کاربری عالی! ⚡️🤩 --- 🛠 تکنولوژی‌های به‌کار رفته: Back-End: 🧠 ASP.NET Core (C#) Front-End:* 🎨 Razor Views & HTML5 Library:* ⚡️ jQuery (AJAX) Style:* 👗 Bootstrap --- 🏗 بخش‌های اصلی معماری پروژه: 1️⃣ لایه مدل (Model): 📦 یک کلاس شسته-رفته به نام `Person` که هویت داده‌های ما رو می‌سازه (مثلاً کی هستی و چه زمانی ثبت‌نام کردی؟). 2️⃣ کنترلر (Controller): 🎮 بخش هوشمند ماجرا! ما یک اکشن داریم که به جای لود کردن یک صفحه سنگین، فقط یک "تکه کد HTML" (همون Partial View) رو مثل یک پازل آماده می‌کنه و می‌فرسته. 3️⃣ پارت‌شال ویو (Partial View): 🧩 این فایل مثل یک قطعه پازله! فقط ردیف‌های جدول رو می‌سازه و منتظره تا جاوااسکریپت اون رو در جای درستش قرار بده. 4️⃣ جادوی ای‌جکس (AJAX - jQuery): 🪄 پل ارتباطی ما! وقتی کاربر گزینه‌ای رو انتخاب می‌کنه، ای‌جکس سریع می‌پره سمت سرور، ردیف‌های جدید رو می‌گیره و بدون اینکه کاربر بفهمه، جایگزین قبلی‌ها می‌کنه! 🏃‍♂️️💨 --- ✅ چرا این روش خیلی خفنه؟ کد تمیز (Clean Code):* هر بخش وظیفه خودشو داره و کدها توی هم گره نمی‌خورن. 🫧 سرعت فرازمینی:* چون فقط چند خط کد جابجا می‌شه، نه کل صفحه! 🛸 رضایت کاربر (UX):* صفحه پرش نداره و همه چیز خیلی نرم و روان اتفاق می‌فته. 😊👌 --- 🔄 فرآیند اجرا در یک نگاه:** 1️⃣ انتخاب: کاربر یک گروه رو از لیست انتخاب می‌کنه. 🖱 2️⃣ درخواست: جاوااسکریپت سیگنال می‌فرسته به سرور. 📡 3️⃣ پردازش: سرور داده‌ها رو فیلتر می‌کنه. ⚙️ 4️⃣ تزریق: کدهای جدید در بدنه جدول میشینن. 💉💉 نتیجه: یک پنل مدیریتی حرفه‌ای و مدرن که کار کردن باهاش لذت‌بخشه! 💎🔥 --- امیدوارم از این پروژه لذت برده باشید! مسیر حرفه‌ای شدن از همین پروژه‌های هوشمند می‌گذره. 🚀🌟
# پروژه مدیریت محصولات با فیلترهای پیشرفته و Ajax ## 📋 معرفی پروژه یک سیستم مدیریت محصولات با قابلیت‌های پیشرفته فیلتر، صفحه‌بندی و جستجو که به صورت Single Page Application (SPA) پیاده‌سازی شده است. ## 🚀 ویژگی‌های اصلی ### 1. فیلترهای هوشمند - 🔍 جستجوی متنی: جستجو در نام محصولات - 🏷 فیلتر وضعیت: Pending، Registered، Cancelled - ✅ فیلتر فعال/غیرفعال: نمایش محصولات فعال یا غیرفعال - 💰 فیلتر قیمت: اسلایدر برای محدود کردن قیمت - 📅 فیلتر تاریخ: انتخاب بازه تاریخ شمسی با استفاده از datepicker فارسی - 🔄 فیلتر آنی: اعمال فیلترها بلافاصله با تغییر هر فیلد ### 2. صفحه‌بندی پیشرفته - 📄 صفحه‌بندی Ajax: بدون رفرش صفحه - 🔗 حفظ فیلترها: حفظ فیلترها هنگام تغییر صفحه - 🌐 تغییر URL: به‌روزرسانی URL بدون رفرش صفحه - ↪️ پشتیبانی از History: کارکردن دکمه‌های عقب/جلو مرورگر ### 3. رابط کاربری مدرن - 🎨 طراحی Responsive: سازگار با تمام دستگاه‌ها - ⚡️ لودینگ آنی: نمایش اسپینر هنگام بارگذاری - 📱 تاریخ‌شمار فارسی: استفاده از Persian Datepicker - 🔢 فرمت اعداد: نمایش اعداد با جداکننده هزارگان ### 4. قابلیت‌های فنی - 🛡 کنترلر دو حالته: پشتیبانی از درخواست‌های عادی و Ajax - 📊 Partial View: جدول محصولات جدا از صفحه اصلی - 🔄 تبدیل اعداد: تبدیل خودکار اعداد فارسی به انگلیسی - 📝 اعتبارسنجی: تبدیل تاریخ شمسی به میلادی در سرور ## 🏗 ساختار پروژه ### مدل‌ها (Models)
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public DateTime CreatedAt { get; set; }
    public bool IsActive { get; set; }
    public ProjectStatus Status { get; set; }
}

public enum ProjectStatus
{
    Pending,
    Registered,
    Cancelled
}
### کنترلر (Controller)
// ProductsController.cs
public async Task<IActionResult> Index(
    ProjectStatus? status, 
    bool? isActive, 
    string searchString, 
    decimal? maxPrice, 
    string startDate, 
    string endDate, 
    int page = 1,
    bool isAjax = false)
{
    // منطق فیلترها و صفحه‌بندی
    // بازگشت Partial View برای Ajax و View کامل برای درخواست عادی
}
### Viewها 1. Index.cshtml - صفحه اصلی با فرم فیلترها 2. _ProductTable.cshtml - Partial View برای جدول محصولات (مخصوص Ajax) ## ⚙️ نحوه راه‌اندازی ### پیش‌نیازها - .NET 6 یا بالاتر - SQL Server یا SQLite - مرورگر مدرن (Chrome, Firefox, Edge) ### مراحل نصب
1. کلون کردن پروژه
2. restore کردن packages: dotnet restore
3. update کردن دیتابیس: dotnet ef database update
4. اجرای پروژه: dotnet run
### فایل‌های ضروری
wwwroot/
├── persian-datepicker/      # کتابخانه تاریخ‌شمار فارسی
├── lib/                     # کتابخانه‌های Bootstrap و FontAwesome
└── js/                      # فایل‌های JavaScript

Views/
├── Products/
│   ├── Index.cshtml        # صفحه اصلی
│   └── _ProductTable.cshtml # Partial View جدول
## 🔧 پیکربندی ### Connection String
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ProductDb;Trusted_Connection=True;"
  }
}
### تنظیمات صفحه‌بندی
// در کنترلر
int pageSize = 3; // تعداد آیتم در هر صفحه
## 📱 واسط کاربری ### بخش‌های اصلی صفحه 1. هدر فیلترها: کارت شامل تمام فیلترها 2. جدول محصولات: نمایش لیست محصولات با ستون‌های مختلف 3. صفحه‌بندی: ناوبری بین صفحات 4. دکمه‌های عملیات: ویرایش و حذف محصولات ### فیلدهای فرم - جستجوی متنی: فیلتر بر اساس نام محصول - Select وضعیت: وضعیت سفارش (در انتظار، ثبت شده، لغو شده) - Select فعال/غیرفعال: نمایش محصولات فعال یا غیرفعال - اسلایدر قیمت: محدود کردن بر اساس قیمت - تاریخ‌شمار فارسی: انتخاب بازه تاریخ ## 🔄 جریان داده ### درخواست عادی (اولیه)
کاربر → URL → کنترلر → View کامل → مرورگر
### درخواست Ajax (فیلتر/صفحه‌بندی)
کاربر → JavaScript → Fetch API → کنترلر → Partial View → JavaScript → به‌روزرسانی DOM
## 🛠 کتابخانه‌های استفاده شده ### Frontend - Bootstrap 5: فریم‌ورک CSS - FontAwesome: آیکون‌ها - Persian Datepicker: انتخاب تاریخ شمسی - Fetch API: ارسال درخواست‌های Ajax ### Backend - Entity Framework Core: ORM برای دیتابیس - ASP.NET Core MVC: فریم‌ورک اصلی - System.Globalization: برای کار با تاریخ شمسی ## 🔒 امنیت
### مکانیزم‌های امنیتی - تأیید حذف: نمایش confirm قبل از حذف - تبدیل اعداد: جلوگیری از خطا در ورودی فارسی - اعتبارسنجی تاریخ: تبدیل صحیح تاریخ شمسی به میلادی - پارامترهای امن: استفاده از پارامترهای نوع‌دار در کنترلر ## 📈 بهینه‌سازی‌ها ### Performance - صفحه‌بندی سروری: بارگذاری فقط داده‌های مورد نیاز - Ajax: کاهش بارگذاری صفحه - کش مرورگر: استفاده از History API - لودینگ آنی: بهبود UX ### SEO - URLهای معنادار: پارامترهای فیلتر در URL - قابلیت اشتراک‌گذاری: هر URL وضعیت خاصی را نشان می‌دهد - دسترسی موتورهای جستجو: درخواست‌های اولیه کامل HTML برمی‌گردانند ## 🧪 تست‌ها ### سناریوهای تست شده 1. ✅ اعمال فیلترهای مختلف 2. ✅ صفحه‌بندی با حفظ فیلترها 3. ✅ تغییر URL بدون رفرش 4. ✅ دکمه‌های عقب/جلو مرورگر 5. ✅ تبدیل اعداد فارسی به انگلیسی 6. ✅ تاریخ شمسی به میلادی 7. ✅ لودینگ آنی 8. ✅ نمایش خطاهای مناسب ## 🐛 عیب‌یابی ### مشکلات رایج و راه‌حل 1. خطای 404: بررسی routeها و نام کنترلر 2. اعداد فارسی: اطمینان از تبدیل در JavaScript و سرور 3. تاریخ‌شمار: بررسی تنظیمات Persian Datepicker 4. Ajax کار نمی‌کند: بررسی پارامتر isAjax در کنترلر ## 📝 نکات توسعه ### برای توسعه بیشتر 1. اضافه کردن مرتب‌سازی: کلیک روی هدر ستون‌ها 2. صادرات اکسل: خروجی گرفتن از نتایج 3. فیلترهای پیشرفته: جستجوی پیشرفته با چندین فیلد 4. نمودارها: نمایش آماری محصولات 5. احراز هویت: محدود کردن دسترسی‌ها 6. API: ایجاد API برای برنامه‌های موبایل ## 🤝 مشارکت ### راهنمای مشارکت
1. Fork کردن پروژه
2. ایجاد Branch جدید (git checkout -b feature/AmazingFeature)
3. Commit کردن تغییرات (git commit -m 'Add AmazingFeature')
4. Push کردن به Branch (git push origin feature/AmazingFeature)
5. باز کردن Pull Request
## 📄 لایسنس این پروژه تحت لایسنس MIT منتشر شده است. ## 📞 پشتیبانی برای گزارش باگ یا درخواست ویژگی جدید، از Issues در گیت‌هاب استفاده کنید. --- ✨ پروژه آماده انتشار!
تعاملی کردن صفحات ASP.mp3
زمان: حجم: 4.6M
تعاملی کردن صفحات وب در ASP ساخته شده از هوش مصنوعی و AJAX در ASP.NET Core MVC با تبادل داده بدون رفرش، تجربه کاربری را بهبود و بار سرور را کاهش می‌دهد. این تکنیک با استفاده از Partial Views و JavaScript، بخش‌های خاصی از صفحه را به‌روزرسانی می‌کند. علیرغم چالش‌های SEO، این روش برای ساخت برنامه‌های مدرن ضروری است.
پروژه ASP.Net Core MVC (وب و سی شارپ)
تعاملی کردن صفحات وب در ASP ساخته شده از هوش مصنوعی و AJAX در ASP.NET Core MVC با تبادل داده بدون
پادکست: AJAX در ASP.NET Core MVC - بهبود UX با لود بدون رفرش 🎧 قسمت اول: معرفی AJAX و مفاهیم پایه میزبان: امروز قصد داریم در مورد تکنولوژی AJAX در ASP.NET Core MVC صحبت کنیم و ببینیم چطور می‌توانیم تجربه کاربری بهتری با لود کردن صفحات بدون رفرش کامل ایجاد کنیم. AJAX چیست؟ · مخفف Asynchronous JavaScript And XML · تکنیکی برای ارسال و دریافت داده‌ها از سرور بدون نیاز به رفرش کامل صفحه · ترکیبی از JavaScript و XMLHttpRequest 🔄 قسمت دوم: مقایسه روش‌های سنتی و AJAX روش سنتی (Full Page Refresh): csharp // کنترلر سنتی public IActionResult Index() { var products = _db.Products.ToList(); return View(products); } مشکلات: · لود کامل همه المان‌های صفحه · مصرف پهنای باند بیشتر · تجربه کاربری ناپیوسته · از دست دادن state برخی المان‌ها روش AJAX: javascript // مثال JavaScript با Fetch API async function loadData() { const response = await fetch('/api/products'); const products = await response.json(); // فقط بخش مورد نظر آپدیت می‌شود updateProductList(products); } 💻 قسمت سوم: پیاده‌سازی AJAX در ASP.NET Core MVC 1. ایجاد Action مخصوص AJAX: csharp public async Task<IActionResult> GetPartialData() { var data = await _service.GetDataAsync(); return PartialView("_DataPartial", data); } 2. استفاده از Partial Views: html <!-- _DataPartial.cshtml --> <div id="ajax-content"> @foreach(var item in Model) { <div class="item">@item.Name</div> } </div> 3. فراخوانی با jQuery: javascript $(document).ready(function() { $('-btn').click(function() { $.ajax({ url: '@Url.Action("GetPartialData")', type: 'GET', success: function(result) { $('').html(result); } }); }); }); ⚡ قسمت چهارم: مزایای استفاده از AJAX ✅ بهبود تجربه کاربری: · بارگذاری سریع‌تر · تعامل روان‌تر · حفظ state صفحه ✅ کاهش بار سرور: · انتقال داده‌های کمتر · کش کردن موثرتر ✅ طراحی مدرن: · شبیه‌سازی اپلیکیشن‌های تک صفحه‌ای (SPA) · تعامل Real-time 🚫 قسمت پنجم: چالش‌ها و معایب مشکلات SEO: · موتورهای جستجو ممکن است محتوای لود شده با AJAX را نبینند مدیریت History مرورگر: javascript // استفاده از History API history.pushState({}, '', '/new-url'); خطاهای JavaScript: · نیاز به هندلینگ خطاهای مناسب · نمایش وضعیت لودینگ 🛠️ قسمت ششم: بهترین روش‌ها 1. Progressive Enhancement: csharp // Action سازگار با AJAX و غیر-AJAX public IActionResult GetData() { var data = GetDataFromService(); if (Request.Headers["X-Requested-With"] == "XMLHttpRequest") return PartialView("_DataPartial", data); else return View("FullPage", data); } 2. نمایش Loading State: javascript function loadWithFeedback() { showLoading(); fetch(url) .then(response => response.json()) .then(data => { updateContent(data); hideLoading(); }) .catch(error => { showError(error); hideLoading(); }); } 3. استفاده از HTML5 Data Attributes: html <button data-ajax="true" data-url="/controller/action" data-target=""> Load Data </button> 🔮 قسمت هفتم: آینده و تکنولوژی‌های مرتبط Blazor در ASP.NET Core: · امکان اجرای کدهای C# در مرورگر · جایگزینی برای JavaScript در برخی موارد SignalR برای ارتباط Real-time: csharp // ارسال داده‌های Real-time به کلاینت public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } } 🎯 نتیجه‌گیری میزبان: AJAX در ASP.NET Core MVC ابزار قدرتمندی برای ایجاد رابط‌های کاربری مدرن و ریسپانسیو است. اگرچه چالش‌های خاص خود را دارد، اما با پیاده‌سازی صحیح می‌توانید: 1. تجربه کاربری بهتری ارائه دهید 2. کارایی اپلیکیشن را افزایش دهید 3. مصرف منابع را کاهش دهید 4. اپلیکیشن‌هایی شبیه به SPA ایجاد کنید توصیه نهایی: از AJAX در جاهایی استفاده کنید که واقعاً ارزش افزوده دارد و همیشه fallbackهای مناسب برای حالت غیر-JavaScript در نظر بگیرید. --- 📚 منابع پیشنهادی:
ProductSort.zip
حجم: 9.8M
1. *Server-Side Sorting: داده‌ها قبل از رسیدن به مرورگر مرتب می‌شوند که باعث سرعت بالای لود می‌شود. 2. Toggle Logic: با یک بار کلیک صعودی و با کلیک دوم نزولی مرتب می‌شود. 3. Clean UI: * استفاده از کلاس‌های Bootstrap برای ایجاد یک ظاهر تمیز و واکنش‌گرا (Responsive).
پروژه ASP.Net Core MVC (وب و سی شارپ)
آیکن های css برای برنامه نویسی https://icons.getbootstrap.com/
آیکونی که فرستادی (
bi bi-arrow-down-up
) مربوط به کتابخانه Bootstrap Icons است. این کتابخانه یکی از کامل‌ترین مجموعه‌ها برای برنامه‌نویسان است. در ادامه، پرکاربردترین آیکون‌های این کتابخانه را که در پروژه‌های برنامه‌نویسی (به‌خصوص پنل‌های ادمین و CRUD) به کار می‌روند، برایت دسته‌بندی کرده‌ام: ### ۱. آیکون‌های مرتب‌سازی (Sorting) برای پروژه‌ای که داری، این‌ها دقیقاً مواردی هستند که نیاز داری: -
bi-arrow-down-up
: حالت خنثی (آماده مرتب‌سازی). -
bi-sort-alpha-down
: مرتب‌سازی حروف (الف تا ی). -
bi-sort-alpha-up
: مرتب‌سازی حروف (ی تا الف). -
bi-sort-numeric-down
: مرتب‌سازی اعداد (کم به زیاد). -
bi-sort-numeric-up
: مرتب‌سازی اعداد (زیاد به کم). ### ۲. آیکون‌های مدیریت داده (CRUD) برای دکمه‌های عملیات روی هر ردیف جدول: -
bi-plus-circle
: افزودن رکورد جدید. -
bi-pencil-square
: ویرایش. -
bi-trash
: حذف (سطل زباله). -
bi-eye
: مشاهده جزئیات. -
bi-check-lg
: تایید یا ذخیره. -
bi-x-lg
: انصراف یا بستن. ### ۳. آیکون‌های ناوبری (Navigation) -
bi-chevron-right
و
bi-chevron-left
: برای ورق زدن صفحات (Pagination). -
bi-list
: منوی همبرگری. -
bi-house
: بازگشت به صفحه اصلی. -
bi-search
: ذره‌بین برای جستجو. ### ۴. آیکون‌های وضعیت و اعلان (Status) -
bi-info-circle
: نمایش راهنما. -
bi-exclamation-triangle
: هشدار (زرد). -
bi-check-circle-fill
: موفقیت (سبز). -
bi-x-circle-fill
: خطا (قرمز). -
bi-gear
: تنظیمات سیستم. ### ۵. آیکون‌های کاربری و دسترسی -
bi-person
: پروفایل کاربر. -
bi-lock
: رمز عبور و امنیت. -
bi-envelope
: بخش تیکت‌ها و پیام‌ها. -
bi-telephone
: تماس با پشتیبانی. --- ### چطور از این‌ها در کد استفاده کنی؟ کافی است نام کلاس را عوض کنی. مثلاً برای دکمه حذف:
<button class="btn btn-danger">
    <i class="bi bi-trash"></i> حذف محصول
</button>
### نکته حرفه‌ای برای پروژه تو: در فایل CSS خودت، می‌توانی برای آیکون‌های داخل جدول استایل بنویسی تا با کلیک روی آن‌ها، ظاهرشان تغییر کند: ```css /* آیکونی که فعال است رنگش آبی شود */ .active-sort i { color: ; font-weight: bold; } /* کوچک کردن آیکون برای اینکه چیدمان جدول بهم نخورد */ .small-icon { font-size: 0.8rem; vertical-align: middle; }