پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه انتخاب لیست
کدی که نوشتی یک پروژهی کامل CRUD ساده با ASP.NET Core MVC هست. بذار برات توضیح بدم که دقیقاً این پروژه چه بخشهایی داره و چطور کار میکنه، تا بتونی بهعنوان معرفی یا مستند منتشرش کنی:
---
## 📌 توضیح پروژه
### 1. مدل (Item)
- شامل سه ویژگی اصلی:
-
Name→ نام آیتم -
Options→ گزینه انتخابی (Option1, Option2, Option3) -
IsActive→ وضعیت فعال یا غیرفعال --- ### 2. کنترلر (ItemsController) این کنترلر عملیاتهای CRUD رو مدیریت میکنه: - Index → نمایش لیست همه آیتمها - Details → نمایش جزئیات یک آیتم خاص - Create (GET/POST) → افزودن آیتم جدید با فرم و ذخیره در دیتابیس - Edit (GET/POST) → ویرایش آیتم موجود - Delete (POST) → حذف آیتم 👉 نکته: در اکشنهای Create و Edit، لیست گزینهها (ViewBag.Options) با متن فارسی پر میشه تا کاربر در فرم گزینهها رو فارسی ببینه، ولی مقدار اصلی (Option1, Option2, Option3) در دیتابیس ذخیره میشه. --- ### 3. ویوها (Views) - Index.cshtml - نمایش لیست آیتمها در جدول - ستونها: نام، گزینه انتخابی (با نمایش فارسی)، وضعیت (فعال/غیرفعال)، عملیات (جزئیات، ویرایش، حذف) - Details.cshtml - نمایش جزئیات یک آیتم - نام، گزینه انتخابی (با نگاشت به فارسی از طریق Dictionary)، وضعیت - Create/Edit.cshtml - فرم افزودن یا ویرایش آیتم - شامل فیلد نام، Dropdown گزینهها (با متن فارسی)، و وضعیت فعال/غیرفعال --- ### 4. نحوه کار پروژه 1. کاربر وارد صفحهی لیست آیتمها (Index) میشه و همه رکوردها رو میبینه. 2. میتونه آیتم جدید اضافه کنه (Create)؛ در فرم، گزینهها فارسی نمایش داده میشن. 3. میتونه آیتم موجود رو ویرایش کنه (Edit)؛ دوباره گزینهها فارسی نمایش داده میشن. 4. میتونه جزئیات آیتم رو ببینه (Details)؛ گزینه انتخابی با متن فارسی نمایش داده میشه. 5. میتونه آیتم رو حذف کنه (Delete). --- ## 🎯 جمعبندی این پروژه یک نمونهی آموزشی کامل CRUD هست که علاوه بر عملیات پایه، یک نکتهی مهم داره: - دادهها در دیتابیس به صورت انگلیسی ذخیره میشن (Option1, Option2, Option3). - اما در فرمها و نمایش، کاربر همیشه متن فارسی میبینه (گزینه اول، گزینه دوم، گزینه سوم). این باعث میشه پروژه هم استاندارد باشه (ذخیره مقدار ثابت در دیتابیس) و هم کاربرپسند (نمایش فارسی در رابط کاربری).
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه انتخاب مهارت
بذار پروژهای که ساختی رو مرحلهبهمرحله توضیح بدم تا دقیقاً معلوم بشه چه بخشهایی داره و چطور کار میکنه. این توضیح رو میتونی بهعنوان معرفی پروژه منتشر کنی:
---
## 📌 معرفی پروژه CRUD مهارتها با RadioButton
### 1. مدل داده (Skill)
- شامل سه فیلد اصلی:
-
Id→ شناسه یکتا برای هر مهارت -
Name→ نام مهارت (مثلاً C#, ASP.NET, JavaScript) -
Level→ سطح مهارت (مبتدی، متوسط، حرفهای) که با RadioButton انتخاب میشود --- ### 2. پایگاه داده (AppDbContext) - از EF Core استفاده میکند. - یک جدول به نام
Skillsساخته میشود که رکوردهای مهارتها را ذخیره میکند. --- ### 3. کنترلر (SkillsController) - عملیاتهای اصلی CRUD را مدیریت میکند: - Index → نمایش لیست همه مهارتها - Details → نمایش جزئیات یک مهارت خاص - Upsert (GET) → یک اکشن مشترک برای افزودن یا ویرایش - اگر
idخالی باشد → فرم افزودن با فیلدهای خالی نمایش داده میشود - اگر
idمقدار داشته باشد → فرم ویرایش با دادههای پر نمایش داده میشود - Upsert (POST) → ذخیره تغییرات - اگر
Id == 0→ رکورد جدید ساخته میشود (Add) - اگر
Id != 0→ رکورد موجود بهروزرسانی میشود (Update) - Delete → حذف یک مهارت --- ### 4. ویوها (Views) - Index.cshtml - لیست همه مهارتها در قالب جدول - ستونها: نام مهارت، سطح مهارت (نمایش فارسی: مبتدی، متوسط، حرفهای)، عملیات (ویرایش، جزئیات، حذف) - Upsert.cshtml - فرم افزودن یا ویرایش مهارت - شامل فیلد نام و RadioButton برای انتخاب سطح مهارت - اگر در حالت افزودن باشد → فیلدها خالی هستند - اگر در حالت ویرایش باشد → فیلدها با دادههای موجود پر میشوند - Details.cshtml - نمایش جزئیات یک مهارت انتخابشده - نام مهارت و سطح آن به صورت فارسی نمایش داده میشود --- ## 🎯 نحوه کار پروژه 1. کاربر وارد صفحهی لیست مهارتها (Index) میشود و همه رکوردها را میبیند. 2. میتواند یک مهارت جدید اضافه کند (Upsert بدون id) و سطح آن را با RadioButton انتخاب کند. 3. میتواند یک مهارت موجود را ویرایش کند (Upsert با id) و سطح جدیدی انتخاب کند. 4. میتواند جزئیات هر مهارت را ببیند (Details). 5. میتواند مهارت را حذف کند (Delete). --- ## ✅ نتیجه این پروژه یک نمونهی کامل و ساده از CRUD با ASP.NET Core MVC است که علاوه بر عملیات پایه، یک ویژگی مهم دارد: - انتخاب سطح مهارت با RadioButton - نمایش سطح مهارت به صورت فارسی در رابط کاربری ---
InterestApp.zip
حجم:
23.2M
پروژه با یک جدول ساخته شده ولی جالب اینجاست که با یک ستون دیتابیس چند داده ذخیره کنید
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه با یک جدول ساخته شده ولی جالب اینجاست که با یک ستون دیتابیس چند داده ذخیره کنید
بذار یک توضیح کامل و آماده برای انتشار دربارهی پروژهای که با یک جدول و CheckBox ساختهای بنویسم. این متن میتونه بهعنوان معرفی پروژه در وبلاگ یا شبکههای اجتماعی استفاده بشه:
---
## 📌 معرفی پروژه CRUD علاقهمندیها با یک جدول و CheckBox
### 🔹 ساختار پروژه
این پروژه با استفاده از ASP.NET Core MVC طراحی شده و هدف آن مدیریت علاقهمندیهای کاربران است. دادهها در یک جدول ساده ذخیره میشوند و کاربر میتواند چند علاقهمندی را همزمان انتخاب کند.
### 🔹 مدل داده
مدل اصلی پروژه شامل یک جدول به نام Interests است که دارای ستونهای زیر میباشد:
-
Id→ شناسه یکتا -
Name→ نام کاربر یا آیتم -
SelectedInterests→ علاقهمندیهای انتخابشده (به صورت رشته ذخیره میشوند، مثلاً
"Music,Sport,Travel") ### 🔹 امکانات پروژه 1. افزودن علاقهمندیها (Create) - کاربر میتواند نام خود را وارد کند. - چند علاقهمندی را با CheckBox انتخاب کند (موسیقی، ورزش، سفر، مطالعه). - انتخابها در ستون
SelectedInterestsذخیره میشوند. 2. ویرایش علاقهمندیها (Edit) - کاربر میتواند رکورد موجود را باز کند. - CheckBoxها بر اساس انتخابهای قبلی پر میشوند (Checked). - تغییرات ذخیره میشوند و رشتهی جدید جایگزین قبلی میشود. 3. نمایش لیست (Index) - همه رکوردها در قالب جدول نمایش داده میشوند. - علاقهمندیها به صورت فارسی و جداشده با "،" نمایش داده میشوند. 4. جزئیات (Details) - نمایش اطلاعات کامل یک رکورد شامل نام و علاقهمندیهای انتخابشده. - علاقهمندیها با نگاشت به فارسی نمایش داده میشوند. 5. حذف (Delete) - امکان حذف رکورد از جدول وجود دارد. --- ### 🔹 نحوه ذخیرهسازی - وقتی کاربر چند CheckBox انتخاب میکند، مقادیر انتخابی در یک رشته با جداکنندهی کاما ذخیره میشوند. - مثال: اگر کاربر موسیقی و سفر را انتخاب کند، در دیتابیس اینطور ذخیره میشود:
Music,Travel- در نمایش (Index و Details)، این رشته به لیست تبدیل شده و با نگاشت به فارسی نمایش داده میشود:
موسیقی، سفر--- ## 🎯 نتیجه این پروژه یک نمونهی ساده و کاربردی از CRUD با یک جدول و CheckBox است که امکانات زیر را فراهم میکند: - مدیریت علاقهمندیها (افزودن، ویرایش، حذف، جزئیات) - انتخاب چند گزینه با CheckBox - ذخیره دادهها در یک ستون رشتهای - نمایش علاقهمندیها به صورت فارسی در لیست و جزئیات --- وقتی پروژه رو معرفی کردی (CRUD علاقهمندیها با یک جدول و CheckBox)، برای بخش ادامه توضیحات میتونی روی دو محور تمرکز کنی: --- ## 🔹 اصولی بودن پروژه - سادگی و آموزشمحور بودن: پروژه با یک جدول ساخته شده تا مفاهیم پایهی CRUD (افزودن، ویرایش، حذف، جزئیات) به شکل ساده و قابل فهم تمرین بشه. - استفاده از CheckBox: این انتخاب باعث میشه کاربر بتونه چند گزینه رو همزمان انتخاب کنه و درک بهتری از نحوهی کار فرمها و ارسال دادهها داشته باشه. - ذخیرهسازی رشتهای: علاقهمندیها در یک ستون رشتهای ذخیره میشن. این روش برای پروژههای آموزشی سریع و ساده است، هرچند در پروژههای بزرگتر محدودیتهایی داره. - نمایش فارسی: دادهها به صورت انگلیسی ذخیره میشن ولی در رابط کاربری به فارسی نمایش داده میشن، که هم استاندارد دیتابیس رعایت میشه و هم تجربه کاربری بهتره. --- ## 🔹 مسیر توسعه و ارتقا - جدول واسط (Many-to-Many): در نسخهی پیشرفته میتونی علاقهمندیها رو در یک جدول جدا ذخیره کنی و با جدول واسط به کاربر وصل کنی. این کار جستجو و گزارشگیری رو خیلی راحتتر میکنه. - مدیریت پویا: علاقهمندیها به جای اینکه ثابت باشن (Music, Sport, Travel)، میتونن از دیتابیس خوانده بشن و کاربر یا مدیر سیستم بتونه گزینههای جدید اضافه کنه. - فیلتر و جستجو: میتونی صفحهای بسازی که کاربرها رو بر اساس علاقهمندیها فیلتر کنه (مثلاً همه کسانی که علاقهمند به ورزش هستن). - رابط کاربری بهتر: استفاده از TagHelper یا Component برای نمایش CheckBoxها به صورت پویا و زیباتر. - اعتبارسنجی و امنیت: اضافه کردن Validation برای اطمینان از اینکه کاربر حتماً یک یا چند علاقهمندی انتخاب کرده و دادهها درست ذخیره میشن. ---
پروژه ASP.Net Core MVC (وب و سی شارپ)
پروژه با یک جدول ساخته شده ولی جالب اینجاست که با یک ستون دیتابیس چند داده ذخیره کنید
## 🎯 متن آماده برای انتشار
«این پروژه یک نمونهی آموزشی CRUD با ASP.NET Core MVC است که با یک جدول ساده ساخته شده و علاقهمندیهای کاربران را مدیریت میکند. کاربر میتواند چند علاقهمندی را با CheckBox انتخاب کند و دادهها در یک ستون رشتهای ذخیره میشوند. در رابط کاربری، علاقهمندیها به صورت فارسی نمایش داده میشوند. این پروژه برای یادگیری اصولی CRUD و کار با فرمها بسیار مناسب است. در نسخههای توسعهیافته میتوان از جدول واسط برای ذخیرهسازی استاندارد، مدیریت پویا علاقهمندیها، فیلتر و جستجو بر اساس علاقهمندیها و رابط کاربری پیشرفتهتر استفاده کرد.»
بلاخره من موفق شدم ویدئو ضبط کنم و این دفعه اولمه کامل و بدونه صدا ضبط کنم
نمیدونم چرا برای من ویدئو ضبط کردن سخته؟
NameApp2.zip
حجم:
23.3M
لاگ نویسی پروژه فرقی نمیکنه چی باشه این پروژه برای پروژه های بزرگ هم کار میکند
پروژه ASP.Net Core MVC (وب و سی شارپ)
لاگ نویسی پروژه فرقی نمیکنه چی باشه این پروژه برای پروژه های بزرگ هم کار میکند
// مسیر پوشه لاگها را مشخص میکنیم (داخل wwwroot/logs)
var folderPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "logs");
// اگر پوشه وجود نداشت، ساخته میشود
Directory.CreateDirectory(folderPath);
// نام فایل لاگ را با تاریخ و ساعت جاری میسازیم (هر بار اجرا یک فایل جدید)
var logFilePath = Path.Combine(folderPath, $"eflog_{DateTime.Now:yyyyMMdd_HHmmss}.txt");
// فایل را باز میکنیم با اجازهی اشتراکگذاری (FileShare.ReadWrite)
// تا چند پروسه بتوانند همزمان به آن دسترسی داشته باشند
var fileStream = new FileStream(logFilePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
// یک StreamWriter روی فایل ایجاد میکنیم و AutoFlush را فعال میکنیم
// تا هر خط بلافاصله نوشته شود و نیازی به Close دستی نباشد
var writer = new StreamWriter(fileStream) { AutoFlush = true };
// ثبت DbContext در DI Container (Dependency Injection)
// اینجا EF Core را تنظیم میکنیم تا:
// 1. از ConnectionString موجود در appsettings.json استفاده کند
// 2. SensitiveDataLogging فعال باشد (پارامترهای کوئری هم نمایش داده شوند)
// 3. همهی کوئریها در فایل لاگ نوشته شوند
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))
.EnableSensitiveDataLogging()
.LogTo(writer.WriteLine, LogLevel.Information));
پروژه ASP.Net Core MVC (وب و سی شارپ)
لاگ نویسی پروژه فرقی نمیکنه چی باشه این پروژه برای پروژه های بزرگ هم کار میکند
## 📌 معرفی پروژه لاگنویسی EF Core در پروژه NameApp2
### 🔹 هدف پروژه
این پروژه با استفاده از ASP.NET Core MVC و Entity Framework Core طراحی شده تا تمام کوئریهای اجرا شده توسط EF Core را در فایل متنی ذخیره کند. هدف اصلی، مانیتورینگ و بررسی کوئریها برای یادگیری و تحلیل عملکرد دیتابیس است.
---
### 🔹 ساختار پروژه
- Program
به گونهای تنظیم شده که هنگام اجرای برنامه، یک فایل جدید در مسیر
wwwroot/logsساخته میشود. - نام فایل شامل تاریخ و ساعت اجراست (مثلاً
eflog_20260101_220000.txt). - همهی کوئریهای EF Core در این فایل ثبت میشوند. --- ### 🔹 امکانات پروژه 1. ایجاد فایل لاگ جدید در هر اجرا - هر بار پروژه اجرا شود، یک فایل جدید ساخته میشود. - این فایل شامل تمام کوئریهای SQL تولید شده توسط EF Core است. 2. ذخیره کوئریها با جزئیات کامل - متن کامل کوئریها (SELECT, INSERT, UPDATE, DELETE) ثبت میشود. - با فعال بودن `EnableSensitiveDataLogging`، پارامترهای کوئری نیز نمایش داده میشوند. 3. مدیریت پوشه لاگها - اگر پوشهی
wwwroot/logsوجود نداشته باشد، به صورت خودکار ساخته میشود. - فایلها به صورت مرتب و قابل دسترسی ذخیره میشوند. 4. قابلیت توسعه - میتوان لاگها را به جای فایل، در دیتابیس یا سرویسهای مانیتورینگ (مثل Seq یا ELK) ذخیره کرد. - امکان استفاده از کتابخانههای حرفهای مثل Serilog یا NLog برای مدیریت بهتر لاگها وجود دارد. --- ### 🔹 نمونه کاربرد - بررسی کوئریهای تولید شده توسط EF Core برای یادگیری. - تحلیل عملکرد دیتابیس و پیدا کردن کوئریهای سنگین. - مستندسازی کوئریها برای آموزش یا انتشار. --- ## 🎯 نتیجه این پروژه یک نمونهی ساده و آموزشی است که نشان میدهد چگونه میتوان کوئریهای EF Core را در فایل متنی ذخیره کرد. کاربرد اصلی آن برای یادگیری، مانیتورینگ و تحلیل کوئریها است و میتواند پایهای برای پروژههای بزرگتر با سیستم لاگ حرفهای باشد.