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
مشاهده در ایتا
دانلود
در دنیای EF Core، این دو عبارت از نظر عملکرد نهایی تقریباً یکسان هستند، اما از نظر ساختار کدنویسی و انعطاف‌پذیری تفاوت‌های ظریفی دارند که در ادامه با زبانی ساده بررسی می‌کنیم. *۱. مفهوم کلی* هر دو عبارت در حال ساخت یک *Query* هستند. در این مرحله هیچ داده‌ای از دایتابیس فراخوانی نمی‌شود (تکنیک Deferred Execution). کد شما فقط دارد به EF می‌گوید: "من قرار است روی این جدول کارهایی انجام دهم، اما فعلاً صبر کن تا دستور نهایی (مثل
ToList
) را بدهم." *۲. بررسی عبارت اول:
()AsQueryable.
* csharp var query = _db.Product.AsQueryable(); زمانی که روی یک
DbSet
(مثل
Product
) متد
AsQueryable
را صدا می‌زنید، در واقع دارید به صراحت اعلام می‌کنید که می‌خواهید با این مجموعه به عنوان یک منبع داده قابل پرس‌وجو رفتار شود. * *مزیت:* اگر بخواهید این کوئری را به متدهای دیگر پاس بدهید یا از Unit Testing (با داده‌های Mock) استفاده کنید، این روش استانداردتر است. * *تغییر نوع:* اگر به اشتباه متدی را صدا بزنید که خروجی را به
IEnumerable
تبدیل کند،
AsQueryable
می‌تواند دوباره آن را به جریان IQueryable برگرداند تا فیلترها همچنان در سمت دایتابیس اجرا شوند (نه در RAM). *۳. بررسی عبارت دوم: انتساب مستقیم* csharp IQueryable<Product> query = _db.Products; در اینجا شما از ویژگی "چندریختی" (Polymorphism) استفاده کرده‌اید. چون کلاس
DbSet
خودش رابط
IQueryable
را پیاده‌سازی کرده است، می‌توانید مستقیماً آن را درون یک متغیر از این نوع بریزید. * *سادگی:* این روش کوتاه‌تر است و در ۹۰ درصد کدهای معمولی استفاده می‌شود. * *وضوح:* با نوشتن صریح نوع داده (
IQueryable<Product>
) چشمان برنامه‌نویس دیگر بلافاصله متوجه می‌شود که قرار است فیلترهای بیشتری روی این متغیر اعمال شود. *۴. تفاوت در کجاست؟* تفاوت اصلی زمانی مشخص می‌شود که بخواهید کدی بنویسید که هم با دیتابیس کار کند و هم با لیست‌های معمولی در حافظه (برای تست واحد یا Unit Test). * *متد
()AsQueryable
:* این متد مثل یک مبدل عمل می‌کند. اگر ورودی آن یک لیست معمولی (In-Memory) باشد، آن را شبیه‌سازی می‌کند تا مثل یک کوئری دیتابیس رفتار کند. این کار باعث می‌شود کدهای لایه سرویس شما بدون تغییر، هم برای دیتابیس واقعی و هم برای تست‌های شما کار کنند. * *انتساب مستقیم:* بیشتر برای زمانی است که مستقیماً با خود
DbContext
در لایه Repository یا Controller کار می‌کنید. *خلاصه کلام* اگر در حال نوشتن یک برنامه معمولی هستید، هر دو روش خروجی یکسانی (یک دستور SQL بهینه) تولید می‌کنند. اما اگر به دنبال نوشتن کدی هستید که قابلیت تست‌گرفتن بالایی داشته باشد یا می‌خواهید از متغیرهای
var
استفاده کنید و در عین حال مطمئن باشید که نوع آن
IQueryable
باقی می‌ماند، استفاده از
()AsQueryable
انتخاب حرفه‌ای‌تری است.
Filter App (4).zip
حجم: 23.6M
پروژه را بروز کردم که دارای انواع فیلتر و جستجو و input type range قیمت و وضعیت انتظار ، ثبت شده ، لغو شده
پروژه یک «سیستم مدیریت و فیلترینگ هوشمند پروژه‌ها» است که با معماری ASP.NET Core MVC توسعه یافته است. این پروژه نمونه‌ای استاندارد از یک پنل مدیریتی (Admin Panel) است که روی تعامل بهینه با دیتابیس و تجربه کاربری (UX) تمرکز دارد. خلاصه‌ی ویژگی‌های کلیدی جهت ارائه یا انتشار: ۱. معماری و تکنولوژی‌ها Back-End: * استفاده از .NET 8 (یا نسخه متناسب) و زبان C#. Database: * بهره‌گیری از Entity Framework Core و رویکرد Code-First. Front-End: * طراحی واکنش‌گرا (Responsive) با Bootstrap 5 و شخصی‌سازی المان‌های فرم. Data Type: * استفاده از Enumها برای مدیریت وضعیت‌ها که باعث پایداری و خوانایی بالای کد شده است. ۲. قابلیت‌های اصلی (Features) جستجوی پیشرفته (IQueryable Filtering):* پیاده‌سازی فیلترینگ در سمت دیتابیس (Server-side) که باعث می‌شود حتی با وجود هزاران رکورد، سرعت سیستم حفظ شود. فیلتر قیمت با Slider:* استفاده از ورودی
range
به همراه جاوااسکریپت برای نمایش لحظه‌ای قیمت، جهت سهولت کار با فرم. مدیریت وضعیت دوگانه:* سیستم فیلتر همزمان بر اساس «وضعیت پروژه» (در انتظار، ثبت شده و...) و «وضعیت نمایش» (فعال/غیرفعال). فیلتر زمانی:* قابلیت محدود کردن نمایش خروجی‌ها در بازه‌های تاریخی مشخص. ۳. نقاط قوت فنی Clean Code: * تبدیل وضعیت‌های عددی به متن‌های فارسی و نشان‌های (Badges) رنگی در رابط کاربری برای درک بهتر کاربر. Performance: * استفاده از متدهای زنجیره‌ای در LINQ برای جلوگیری از بارگذاری داده‌های اضافی در RAM. UX/UI: * طراحی کارت‌محور (Card-based Layout) و چیدمان منظم ستون‌ها در بخش فیلترینگ برای جلوگیری از شلوغی رابط کاربری. ۴. هدف پروژه این سیستم بستر مناسبی برای مدیریت هر نوع داده‌ای (از پروژه‌های ساختمانی گرفته تا سفارشات فروشگاه) است که نیاز به دسته‌بندی دقیق، جستجوی سریع و مدیریت وضعیت‌های مختلف دارد. این خلاصه، هم جنبه‌های فنی (برای برنامه‌نویسان) و هم جنبه‌های کاربردی (برای کارفرمایان) را به خوبی پوشش می‌دهد.
Filter App (5).zip
حجم: 23.6M
بروزرسانی پروژه با هر تغییر رنج قیمت غلتک رنج تغییر نمیکند با این کار: وقتی شما قیمت را مثلاً روی ۷۰۰,۰۰۰ قرار می‌دهید و دکمه را می‌زنید، بعد از لود شدن صفحه، اسلایدر دقیقاً روی ۷۰۰,۰۰۰ باقی می‌ماند و عدد بالای آن هم به جای ۵۰۰,۰۰۰، همان ۷۰۰,۰۰۰ را نشان می‌دهد.
Filter App (6).zip
حجم: 23.6M
این دفعه کامل ترین پروژه از نظر فیلتر و صفحه بندی این هم بخشی از کد <nav aria-label="Page navigation"> <ul class="pagination justify-content-center"> @* وقتی فیلتر اعمال شود و وارد صفحه بعدی شود، فیلتر حذف نشود *@ @for (int i = 1; i <= ViewBag.TotalPages; i++) { <li class="page-item @(i == ViewBag.CurrentPage ? "active" : "")"> <a class="page-link" asp-action="Index" asp-route-page="@i" asp-route-searchString="@ViewBag.SearchString" asp-route-status="@ViewBag.Status" asp-route-isActive="@ViewBag.IsActive" asp-route-maxPrice="@ViewBag.MaxPrice" asp-route-startDate="@ViewBag.StartDate" asp-route-endDate="@ViewBag.EndDate"> @i </a> </li> } </ul> </nav>
پروژه ASP.Net Core MVC (وب و سی شارپ)
این دفعه کامل ترین پروژه از نظر فیلتر و صفحه بندی این هم بخشی از کد
Filter App (7).zip
حجم: 23.6M
تقویم شمسی به فیلتر اضافه شد نکته : فقط از طریق تقویم تاریخ عوض می شود بررسی کنید این پروژه 7 می خواهید یا پروژه 6 که input text تاریخ را وارد میکنید
Filter App (8).zip
حجم: 23.6M
ببخشید این دفعه همه کد های جاوااسکریپت را دیدم و خلاصه کردم کد جاوااسکریپت در صفحه اصلی کنترلر ProductController کوتاه تر شده
RAST.zip
حجم: 16M
پروژه راست که با کمک هوش مصنوعی نوشتم
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه راست که با کمک هوش مصنوعی نوشتم
پروژه شما با نام "راست" (RAST)، یک سامانه مدیریت وظایف و پروژه‌هاست که با استفاده از تکنولوژی‌های مدرن دنیای دات‌نت طراحی شده است. این پروژه برای انتشار و ارائه به عنوان یک نمونه کار یا محصول کاربردی، دارای ویژگی‌های فنی و ظاهری بسیار ارزشمندی است. در ادامه، توضیحات کامل پروژه را در ۴ بخش اصلی برای شما تدوین کرده‌ام: ۱. معماری و تکنولوژی‌های استفاده شده این پروژه بر پایه الگوی محبوب MVC (Model-View-Controller) بنا شده که باعث جداسازی دقیق منطق برنامه از ظاهر آن می‌شود: Backend: * استفاده از ASP.NET Core (جدیدترین نسخه) برای مدیریت درخواست‌ها. Database: * بهره‌گیری از Entity Framework Core به همراه پایگاه‌داده SQL Server. لایه داده (Fluent API):* تنظیمات دیتابیس به صورت کدنویسی شده (کلاس
AppDbContext
) انجام شده که دقت کار با مقادیر مالی (Decimal) را تضمین می‌کند. Frontend: * استفاده از Bootstrap برای واکنش‌گرایی (Responsive) و نمایش صحیح در موبایل و دسکتاپ. ۲. ویژگی‌های کلیدی هوشمند پروژه "راست" صرفاً یک CRUD ساده (ساختن، خواندن، ویرایش، حذف) نیست، بلکه دارای قابلیت‌های هوشمندی است: تشخیص خودکار زبان (RTL/LTR):* سیستم به صورت هوشمند تشخیص می‌دهد که نام پروژه فارسی است یا انگلیسی و جهت متن را برای خوانایی بهتر تغییر می‌دهد. مرتب‌سازی پیشرفته (Sorting Helper):* قابلیت مرتب‌سازی لیست بر اساس جدیدترین‌ها، پربازدیدترین‌ها، میزان بودجه و حتی ترتیب الفبای هوشمند. سیستم ردیابی بازدید:* با هر بار مشاهده جزئیات یک پروژه، سیستم به صورت خودکار تعداد بازدید را افزایش داده و در دیتابیس ذخیره می‌کند. جستجوی آنی:* امکان فیلتر کردن پروژه‌ها بر اساس بخشی از نام آن‌ها. ۳. تجربه کاربری (UI/UX) در طراحی این سامانه، سادگی و زیبایی در اولویت بوده است: ظاهر مدرن:* استفاده از کارت‌های (Cards) جداگانه برای نمایش اطلاعات و فرم‌ها. آیکون‌های سیستمی:* برای جلوگیری از مشکلات بارگذاری در سیستم‌های مختلف، از اموجی‌های استاندارد و زیبا به جای فونت‌های سنگین استفاده شده است. رنگ‌بندی هدفمند:* استفاده از رنگ سبز برای "افزودن"، زرد برای "ویرایش" و قرمز برای "حذف" جهت راهنمایی بهتر چشم کاربر. ۴. امنیت و پایداری کدنویسی این پروژه با رعایت اصول امنیتی انجام شده است: Anti-Forgery Tokens: * جلوگیری از حملات مخرب وب (CSRF). Input Validation: * اعتبارسنجی دقیق داده‌های ورودی کاربر (نام و بودجه) هم در سمت سرور و هم در سمت کاربر. Concurrency Handling: * مدیریت خطاهای احتمالی در صورتی که دو کاربر همزمان بخواهند یک پروژه را تغییر دهند. --- خلاصه نهایی برای معرفی: > "پروژه راست، یک راهکار سبک و سریع برای مدیریت تسک‌هاست که تمرکز ویژه‌ای بر نمایش صحیح متون دو زبانه (فارسی/انگلیسی) و مدیریت دقیق بودجه دارد. این سامانه با رعایت استانداردهای Clean Code، پتانسیل بالایی برای توسعه و تبدیل شدن به یک پلتفرم مدیریتی جامع را داراست." این توضیحات به خوبی تخصص شما را در کدنویسی و توجه به جزئیات (مثل جهت متن و امنیت) به نمایش می‌گذارد. 🚀✨
AjaxApp.zip
حجم: 2.5M
کد ساده که با حداقل جاوااسکریپت داده های صفحه اصلی با عوض کردن لیست باکس بدونه رفرش عوض می شود