eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
asp-validation-for یک Tag Helper در ASP.NET Core است که برای نمایش پیام‌های خطای اعتبارسنجی در کنار کنترل‌های ورودی فرم استفاده می‌شود. این Tag Helper به شما امکان می‌دهد که به راحتی پیام‌های خطای مرتبط با یک فیلد خاص را نشان دهید. مثال استفاده از asp-validation-for: <form asp-action="SubmitForm" method="post"> <div> <label asp-for="Name"></label> <input asp-for="Name" /> <span asp-validation-for="Name"></span> </div> <div> <label asp-for="Email"></label> <input asp-for="Email" /> <span asp-validation-for="Email"></span> </div> <button type="submit">ارسال</button> </form> تنظیم رنگ پیام‌های خطا به رنگ قرمز: برای تنظیم رنگ پیام‌های خطای اعتبارسنجی به رنگ قرمز، می‌توانید CSS سفارشی اضافه کنید. به عنوان مثال: ایجاد یا اصلاح فایل CSS (مثل site.css): .field-validation-error { color: red; } اطمینان از بارگذاری CSS در ویو یا Layout: <!DOCTYPE html> <html> <head> <title>@ViewData["Title"] - My Web Application</title> <link rel="stylesheet" type="text/css" href="~/css/site.css" /> </head> <body> <header> <nav> <!-- نوار ناوبری --> </nav> </header> <main> @RenderBody() </main> <footer> <!-- فوتر --> </footer> @RenderSection("Scripts", required: false) </body> </html> نتیجه: با این کار، پیام‌های خطای اعتبارسنجی که توسط asp-validation-for تولید می‌شوند، به رنگ قرمز نمایش داده خواهند شد و تجربه کاربری بهتری را فراهم می‌کنند.
پارشیال (Partial View) در ASP.NET Core MVC یک ویو جزئی است که می‌تواند برای ساختاردهی و مدیریت بهتر کدها و اجزای قابل تکرار ویوها استفاده شود. با استفاده از پارشیال‌ها، می‌توانید قطعات مشترکی از کد را در ویوهای مختلف استفاده کنید، بدون اینکه نیاز به تکرار آنها باشد. این روش به نوشتن کدهای تمیزتر و قابل نگهداری‌تر کمک می‌کند. مثال کاربرد پارشیال ویو: فرض کنید یک منوی ناوبری دارید که در تمام صفحات وب‌سایت تکرار می‌شود. می‌توانید آن را به صورت یک پارشیال ویو تعریف کنید. 1. ایجاد پارشیال ویو (_Navigation.cshtml): <ul> <li><a href="/home">خانه</a></li> <li><a href="/about">درباره ما</a></li> <li><a href="/contact">تماس با ما</a></li> </ul> 2. استفاده از پارشیال ویو در فایل Layout (_Layout.cshtml): <!DOCTYPE html> <html> <head> <title>@ViewData["Title"] - My Web Application</title> <link rel="stylesheet" type="text/css" href="~/css/site.css" /> </head> <body> <header> @Html.Partial("_Navigation") </header> <main> @RenderBody() </main> <footer> <!-- فوتر --> </footer> @RenderSection("Scripts", required: false) </body> </html> 3. استفاده از پارشیال ویو در یک ویو دیگر: توضیحات: پارشیال ویو (_Navigation.cshtml): شامل کد HTML برای منوی ناوبری است. فایل Layout (_Layout.cshtml): از پارشیال ویو برای نمایش منوی ناوبری استفاده می‌کند. ویو دیگر: نیز می‌تواند از همان پارشیال ویو استفاده کند تا منوی ناوبری را نمایش دهد. استفاده از پارشیال ویوها باعث می‌شود که تکرار کدها کاهش یابد و مدیریت و نگهداری کدها ساده‌تر
از پارشیال ویوها در سکشن‌ها نیز استفاده کنید. این کار به شما امکان می‌دهد تا محتوای تکراری را به صورت بهینه مدیریت کنید و همچنین کدهای تمیزتر و سازمان‌یافته‌تری داشته باشید. مثال: فرض کنید می‌خواهید یک سکشن به نام Footer داشته باشید که شامل محتوای فوتر است و این محتوا در یک پارشیال ویو جداگانه قرار دارد. ایجاد پارشیال ویو (_Footer.cshtml): <footer> <p>© 2024 - My Web Application</p> </footer> استفاده از پارشیال ویو در سکشن (_Layout.cshtml): <!DOCTYPE html> <html> <head> <title>@ViewData["Title"] - My Web Application</title> <link rel="stylesheet" type="text/css" href="~/css/site.css" /> </head> <body> <header> <nav> <!-- نوار ناوبری --> </nav> </header> <main> @RenderBody() </main> <footer> @RenderSection("Footer", required: false) </footer> @RenderSection("Scripts", required: false) </body> </html> استفاده از سکشن در ویو (Index.cshtml): @model YourNamespace.Models.SomeModel <h1>Welcome to My Web Application</h1> <p>This is the content of the home page.</p> @section Footer { @Html.Partial("_Footer") } @section Scripts { <script src="~/js/customScript.js"></script> } توضیحات: پارشیال ویو (_Footer.cshtml): شامل محتوای فوتر است. فایل Layout (_Layout.cshtml): سکشن Footer را تعریف کرده که شامل پارشیال ویو می‌شود. ویو (Index.cshtml): سکشن Footer را تعریف کرده و پارشیال ویو _Footer را در آن رندر می‌کند. این کار به شما امکان می‌دهد تا محتوای تکراری مانند فوتر را به صورت مرکزی مدیریت کنید و در همه
می‌توانید از @RenderPartial برای رندر کردن یک پارشیال ویو داخل یک سکشن استفاده کنید. معمولاً از await برای رندر کردن پارشیال ویوها به شکل غیرهمزمان استفاده می‌شود. با استفاده از await می‌توانید به صورت بهتری از منابع سرور استفاده کنید. مثال: برای قرار دادن پارشیال ویوی _ValidationScriptsPartial در سکشن Scripts، به صورت زیر عمل کنید: @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } توضیحات: await Html.RenderPartialAsync("_ValidationScriptsPartial"): این متد به صورت غیرهمزمان پارشیال ویو _ValidationScriptsPartial را رندر می‌کند. استفاده از await برای رندر کردن پارشیال ویوها توصیه می‌شود زیرا به بهره‌وری بهتر از منابع سرور کمک می‌کند. به این ترتیب، اسکریپت‌های اعتبارسنجی به درستی در سکشن Scripts بارگذاری می‌شوند و می‌توانند در فرم‌های شما استفاده شوند.
در ASP.NET Core، Data Annotations یکی از راه‌های محبوب برای اعتبارسنجی مدل‌ها است. این Attributeها به شما امکان می‌دهند تا قواعد اعتبارسنجی را در سطح مدل تعریف کنید. در زیر لیستی از رایج‌ترین Attributeهای اعتبارسنجی و توضیحات مربوط به هر یک آورده شده است: 1. [Required] این Attribute مشخص می‌کند که یک فیلد اجباری است و نباید خالی باشد. [Required(ErrorMessage = "این فیلد ضروری است")] public string Name { get; set; } 2. [StringLength] این Attribute طول مجاز یک رشته را مشخص می‌کند. [StringLength(100, ErrorMessage = "طول رشته نباید بیش از 100 کاراکتر باشد")] public string Description { get; set; } 3. [Range] این Attribute محدوده مجاز برای یک عدد را مشخص می‌کند. [Range(1, 100, ErrorMessage = "مقدار باید بین 1 تا 100 باشد")] public int Age { get; set; } 4. [EmailAddress] این Attribute مشخص می‌کند که فیلد باید یک آدرس ایمیل معتبر باشد. [EmailAddress(ErrorMessage = "لطفاً یک آدرس ایمیل معتبر وارد کنید")] public string Email { get; set; } 5. [Compare] این Attribute برای مقایسه دو فیلد استفاده می‌شود. معمولاً برای اعتبارسنجی رمزهای عبور استفاده می‌شود. [Compare("Password", ErrorMessage = "رمزهای عبور باید یکسان باشند")] public string ConfirmPassword { get; set; } 6. [RegularExpression] این Attribute برای اعتبارسنجی با استفاده از یک الگوی خاص (Regular Expression) استفاده می‌شود. [RegularExpression(@"^\d{4}-\d{2}-\d{2}$", ErrorMessage = "تاریخ باید به فرم YYYY-MM-DD باشد")] public string Date { get; set; } 7. [Phone] این Attribute مشخص می‌کند که فیلد باید یک شماره تلفن معتبر باشد. [Phone(ErrorMessage = "لطفاً یک شماره تلفن معتبر وارد کنید")] public string PhoneNumber { get; set; } 8. [CreditCard] این Attribute برای اعتبارسنجی شماره کارت اعتباری استفاده می‌شود. [CreditCard(ErrorMessage = "لطفاً یک شماره کارت اعتباری معتبر وارد کنید")] public string CreditCardNumber { get; set; } 9. [Url] این Attribute مشخص می‌کند که فیلد باید یک URL معتبر باشد. [Url(ErrorMessage = "لطفاً یک URL معتبر وارد کنید")] public string Website { get; set; } 10. [Custom Validation] شما همچنین می‌توانید Attributeهای سفارشی خود را برای قواعد خاص اعتبارسنجی ایجاد کنید. public class MyCustomValidationAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (/* شرط معتبر بودن */) { return ValidationResult.Success; } return new ValidationResult("پیغام خطای سفارشی"); } } public class MyModel { [MyCustomValidation] public string MyProperty { get; set; } } این Attributeها به شما کمک می‌کنند تا قواعد اعتبارسنجی مورد نیاز خود را به راحتی و به صورت متمرکز در مدل‌های خود تعریف کنید. اگر نیاز به توضیحات بیشتری دارید یا پرسش دیگری در این زمینه دارید، بفرمایید!
در واقع attribute phone برای شماره تلفن بین‌المللی استفاده می‌شود و برای اطمینان از صحت و مناسبیت شماره‌ها، می‌توانید از ابزارهایی مانند RegularExpression استفاده کنید. این ابزارها به شما کمک می‌کنند تا شماره‌های تلفن بین‌المللی را با قالب مناسبی ارزیابی کنید. این الگو به شما اجازه می‌دهد که شماره‌های تلفن همراه ایرانی را با پیش‌شماره‌های ۰ و +۹۸ شناسایی کنید و مطمئن شوید که قالب آن‌ها درست است. توضیحات الگو: (\+98|0)? : این بخش نشان می‌دهد که شماره می‌تواند با +۹۸ یا ۰ شروع شود و این قسمت اختیاری است. 9 : نشان‌دهنده این است که شماره تلفن با ۹ شروع می‌شود (تمام شماره‌های موبایل در ایران با ۹ شروع می‌شوند). \d{9} : به این معناست که بعد از ۹، باید ۹ رقم دیگر باشد. استفاده در مدل: می‌توانید از این الگو در مدل خود استفاده کنید: public class ContactModel { [Required(ErrorMessage = "لطفا شماره تلفن خود را وارد کنید")] [RegularExpression(@"(\+98|0)?9\d{9}", ErrorMessage = "لطفا یک شماره تلفن معتبر وارد کنید")] public string PhoneNumber { get; set; } } با این کار، شماره تلفن‌های ورودی با الگوی مورد نظر تطبیق داده می‌شوند و در صورت نادرست بودن قالب، پیام خطای مشخص‌شده نمایش داده می‌شود.
Attribute Display در ASP.NET Core MVC و Entity Framework به شما اجازه می‌دهد تا نام‌های قابل فهم‌تری برای فیلدهای مدل‌ها در ویوها نمایش دهید. با استفاده از Display, می‌توانید نام‌هایی که به کاربران نشان داده می‌شود را تغییر دهید بدون اینکه نام فیلدهای مدل را تغییر دهید. مثال: فرض کنید یک مدل به نام User دارید و می‌خواهید نام فیلدها را در ویوها تغییر دهید: public class User { [Required] [Display(Name = "نام کاربری")] public string UserName { get; set; } [Required] [Display(Name = "ایمیل")] public string Email { get; set; } [Required] [Display(Name = "رمز عبور")] public string Password { get; set; } } استفاده در ویو: وقتی که از این مدل در ویو استفاده می‌کنید، نام‌های تعریف شده در Display به کاربران نمایش داده می‌شود: @model YourNamespace.Models.User <form asp-action="Register"> <div> <label asp-for="UserName"></label> <input asp-for="UserName" /> <span asp-validation-for="UserName"></span> </div> <div> <label asp-for="Email"></label> <input asp-for="Email" /> <span asp-validation-for="Email"></span> </div> <div> <label asp-for="Password"></label> <input asp-for="Password" type="password" /> <span asp-validation-for="Password"></span> </div> <button type="submit">ثبت نام</button> </form> نتیجه: با استفاده از Display, نام‌های فیلدها به کاربران به صورت فارسی یا هر نامی که مشخص کرده‌اید نمایش داده می‌شوند، مانند "نام کاربری"، "ایمیل" و "رمز عبور"، حتی اگر نام فیلدها در مدل به زبان انگلیسی باشد. این کار به بهبود خوانایی و تجربه کاربری کمک می‌کند و از استفاده از نام‌های داخلی فیلدها در رابط کاربری جلوگیری می‌کند.
یک نمونه خروجی برای مدل User که شامل اعتبارسنجی و نمایش نام فیلدها به فارسی است: مدل (User.cs): public class User { [Required] [Display(Name = "نام کاربری")] public string UserName { get; set; } [Required] [EmailAddress] [Display(Name = "ایمیل")] public string Email { get; set; } [Required] [Display(Name = "رمز عبور")] public string Password { get; set; } } ویو (Register.cshtml): @model YourNamespace.Models.User <h1>ثبت نام</h1> <form asp-action="Register"> <div> <label asp-for="UserName"></label> <input asp-for="UserName" /> <span asp-validation-for="UserName"></span> </div> <div> <label asp-for="Email"></label> <input asp-for="Email" /> <span asp-validation-for="Email"></span> </div> <div> <label asp-for="Password"></label> <input asp-for="Password" type="password" /> <span asp-validation-for="Password"></span> </div> <button type="submit">ثبت نام</button> </form> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } نتیجه خروجی در مرورگر: وقتی این ویو را در مرورگر مشاهده کنید، فرم به این شکل خواهد بود: برچسب‌ها (label) و پیام‌های خطا (span) به فارسی نمایش داده می‌شوند. اگر کاربر فیلدهای اجباری را پر نکند یا ایمیل نامعتبری وارد کند، پیام‌های خطای مناسبی نمایش داده می‌شوند. با استفاده از مدل User و ویو Register که در بالا توضیح داده شد، وقتی کاربر فرم را پر کند و ارسال کند، نتیجه‌ای مانند زیر خواهید داشت: نام کاربری: اگر این فیلد پر نشده باشد، پیام "لطفا نام کاربری خود را وارد کنید" نمایش داده می‌شود. ایمیل: اگر ایمیل معتبر نباشد، پیام "لطفا یک آدرس ایمیل معتبر وارد کنید" نمایش داده می‌شود. رمز عبور: اگر رمز عبور وارد نشده باشد، پیام "لطفا رمز عبور خود را وارد کنید" نمایش داده می‌شود. این مثال به شما کمک می‌کند تا فرم‌های خود را با استفاده از Data Annotations اعتبارسنجی کنید و پیام‌های خطا را به زبان فارسی نمایش دهید.
اگر کاربر فایل JavaScript را حذف کند و اعتبارسنجی سمت کلاینت (Client-Side Validation) غیر فعال شود، اعتبارسنجی سمت سرور (Server-Side Validation) همچنان برای اطمینان از صحت داده‌ها ضروری است. اعتبارسنجی سمت سرور برای بررسی داده‌ها در سمت سرور پس از ارسال فرم انجام می‌شود و از وارد شدن داده‌های نادرست یا مخرب به سیستم جلوگیری می‌کند. چگونه اعتبارسنجی سمت سرور را پیاده‌سازی کنیم: مدل با اعتبارسنجی: مدل را با استفاده از Data Annotations برای تعریف قوانین اعتبارسنجی آماده کنید. این اعتبارسنجی‌ها در سمت سرور اعمال می‌شوند. public class User { [Required(ErrorMessage = "لطفا نام کاربری خود را وارد کنید")] [StringLength(100, ErrorMessage = "نام کاربری نباید بیش از 100 کاراکتر باشد")] public string UserName { get; set; } [Required(ErrorMessage = "لطفا ایمیل خود را وارد کنید")] [EmailAddress(ErrorMessage = "لطفا یک ایمیل معتبر وارد کنید")] public string Email { get; set; } [Required(ErrorMessage = "لطفا رمز عبور خود را وارد کنید")] [StringLength(100, ErrorMessage = "رمز عبور نباید بیش از 100 کاراکتر باشد")] public string Password { get; set; } } کنترلر برای پردازش داده‌ها: کنترلر را طوری تنظیم کنید که داده‌های ارسالی را اعتبارسنجی کند و در صورت عدم اعتبار، پیام‌های خطا را به کاربر نمایش دهد. public class UserController : Controller { [HttpPost] public IActionResult Register(User model) { if (ModelState.IsValid) { // منطق برای پردازش داده‌ها TempData["Message"] = "ثبت نام با موفقیت انجام شد"; return RedirectToAction("Index"); } // اگر داده‌ها معتبر نبودند، ویو با پیام‌های خطا بازگردانده می‌شود return View(model); } } ویو برای نمایش خطاها: ویو را طوری تنظیم کنید که پیام‌های خطای اعتبارسنجی سمت سرور را نمایش دهد. @model YourNamespace.Models.User <h1>ثبت نام</h1> <form asp-action="Register" method="post"> <div> <label asp-for="UserName"></label> <input asp-for="UserName" /> <span asp-validation-for="UserName"></span> </div> <div> <label asp-for="Email"></label> <input asp-for="Email" /> <span asp-validation-for="Email"></span> </div> <div> <label asp-for="Password"></label> <input asp-for="Password" type="password" /> <span asp-validation-for="Password"></span> </div> <button type="submit">ثبت نام</button> </form> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } با این روش، حتی اگر JavaScript غیر فعال باشد یا فایل‌های اعتبارسنجی جاوااسکریپت حذف شوند، اعتبارسنجی سمت سرور از ورود داده‌های نادرست جلوگیری می‌کند و پیام‌های خطا به کاربر نمایش داده می‌شود.
Fluent Validation یک کتابخانه محبوب در دات‌نت است که امکان ایجاد قوانین اعتبارسنجی قدرتمند و منعطف را با استفاده از کدهای fluent فراهم می‌کند. به جای استفاده از Data Annotations، می‌توانید اعتبارسنجی‌های خود را با استفاده از کلاس‌های جداگانه تعریف کنید که قوانین اعتبارسنجی را به صورت روان و خوانا ایجاد می‌کنند. نصب Fluent Validation ابتدا باید کتابخانه FluentValidation را نصب کنید. می‌توانید از طریق NuGet Package Manager این کار را انجام دهید: dotnet add package FluentValidation ایجاد یک Validator یک کلاس Validator برای مدل خود ایجاد کنید. در این مثال، یک مدل به نام User و یک کلاس Validator برای آن ایجاد می‌کنیم: مدل (User.cs): public class User { public string UserName { get; set; } public string Email { get; set; } public string Password { get; set; } } Validator (UserValidator.cs): using FluentValidation; public class UserValidator : AbstractValidator<User> { public UserValidator() { RuleFor(user => user.UserName) .NotEmpty().WithMessage("لطفا نام کاربری خود را وارد کنید") .Length(1, 100).WithMessage("نام کاربری نباید بیش از 100 کاراکتر باشد"); RuleFor(user => user.Email) .NotEmpty().WithMessage("لطفا ایمیل خود را وارد کنید") .EmailAddress().WithMessage("لطفا یک ایمیل معتبر وارد کنید"); RuleFor(user => user.Password) .NotEmpty().WithMessage("لطفا رمز عبور خود را وارد کنید") .Length(6, 100).WithMessage("رمز عبور باید حداقل 6 کاراکتر باشد و نباید بیش از 100 کاراکتر باشد"); } } پیکربندی FluentValidation در ASP.NET Core باید FluentValidation را به سرویس‌های خود در Program.cs یا Startup.cs اضافه کنید: پیکربندی در Program.cs: var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); // افزودن FluentValidation builder.Services.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<UserValidator>()); var app = builder.Build(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); app.Run(); استفاده از Validator در کنترلر کنترلر خود را طوری تنظیم کنید که داده‌های ارسالی را با استفاده از Validator بررسی کند: کنترلر (UserController.cs): public class UserController : Controller { private readonly IValidator<User> _validator; public UserController(IValidator<User> validator) { _validator = validator; } [HttpPost] public IActionResult Register(User model) { var result = _validator.Validate(model); if (result.IsValid) { // منطق برای پردازش داده‌ها TempData["Message"] = "ثبت نام با موفقیت انجام شد"; return RedirectToAction("Index"); } foreach (var error in result.Errors) { ModelState.AddModelError(error.PropertyName, error.ErrorMessage); } return View(model); } } ویو برای نمایش خطاها ویو را طوری تنظیم کنید که پیام‌های خطای اعتبارسنجی Fluent Validation را نمایش دهد: ویو (Register.cshtml): @model YourNamespace.Models.User <h1>ثبت نام</h1> <form asp-action="Register" method="post"> <div> <label asp-for="UserName"></label> <input asp-for="UserName" /> <span asp-validation-for="UserName"></span> </div> <div> <label asp-for="Email"></label> <input asp-for="Email" /> <span asp-validation-for="Email"></span> </div> <div> <label asp-for="Password"></label> <input asp-for="Password" type="password" /> <span asp-validation-for="Password"></span> </div> <button type="submit">ثبت نام</button> </form> نتیجه با این روش، می‌توانید از FluentValidation برای اعتبارسنجی داده‌های ورودی استفاده کنید و پیام‌های خطای مناسبی به کاربر نمایش دهید.
Scaffolding چیست
در ASP.NET Core MVC، Scaffolding فرآیندی است که به شما کمک می‌کند کدهای ابتدایی و پایه‌ای برای عملیات CRUD (ایجاد، خواندن، به‌روزرسانی و حذف) را به صورت خودکار تولید کنید. با استفاده از Scaffolding، می‌توانید به سرعت کنترلرها و ویوهای مورد نیاز برای کار با مدل‌های داده‌ای خود را ایجاد کنید، بدون اینکه نیاز به نوشتن کدهای تکراری داشته باشید. مزایای استفاده از Scaffolding: صرفه‌جویی در زمان: به جای نوشتن دستی کدهای CRUD، می‌توانید به سرعت کدهای اولیه را تولید کنید. کاهش خطاها: کدهای تولید شده توسط Scaffolding معمولاً استاندارد و بدون خطا هستند. آسانی در توسعه: توسعه‌دهندگان تازه‌کار می‌توانند به سرعت با ساختار پروژه آشنا شوند و کدهای اولیه را تولید کنند. مراحل استفاده از Scaffolding: فرض کنید یک مدل به نام Product دارید و می‌خواهید کنترلر و ویوهای مربوط به آن را با استفاده از Scaffolding ایجاد کنید. 1. نصب ابزارهای مورد نیاز: مطمئن شوید که ابزارهای مورد نیاز برای Scaffolding نصب شده‌اند. می‌توانید از NuGet Package Manager برای نصب ابزارهای مربوطه استفاده کنید: dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design dotnet add package Microsoft.EntityFrameworkCore.Design 2. ایجاد مدل (Product.cs): public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } 3. ایجاد DbContext (ApplicationDbContext.cs): public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } } 4. اجرای Scaffolding: از خط فرمان یا ترمینال برای اجرای دستور Scaffolding استفاده کنید. این دستور یک کنترلر و ویوهای مربوط به مدل Product ایجاد می‌کند: dotnet aspnet-codegenerator controller -name ProductsController -m Product -dc ApplicationDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries 5. تنظیم مسیرها: در فایل Program.cs یا Startup.cs، مسیرها را تنظیم کنید: var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); app.Run(); نتیجه: با اجرای Scaffolding، یک کنترلر به نام ProductsController و ویوهای مرتبط با عملیات CRUD برای مدل Product ایجاد می‌شود. این کدهای تولید شده می‌توانند به سرعت شما را در شروع کار با مدل‌ها و پایگاه داده‌ها یاری کنند.