CodeShot
Razor Pages1 دقیقه مطالعه

Razor Pages چیست؟

مدل صفحه‌محور ASP.NET Core که هر صفحه یک فایل `.cshtml` به‌همراه کلاس `PageModel` مستقل خودش دارد — جایگزین ساده‌تر MVC برای سناریوهای صفحه‌محور.

چرا مهم است؟

برای اپلیکیشن‌هایی که ساختارشان بیشتر صفحه‌محور است (نه API/منابع محور)، Razor Pages کد را نزدیک‌تر به همان صفحه‌ای که به آن مربوط است نگه می‌دارد و نیاز به یک Controller جدا برای هر گروه صفحه را حذف می‌کند.

تعریف

هر Razor Page از دو فایل تشکیل شده: Index.cshtml (View) و Index.cshtml.cs (کلاس PageModel با متدهای OnGet/OnPost) — بدون نیاز به Controller جداگانه.

مثال

public class IndexModel : PageModel
{
    private readonly IProductService _service;
    public IndexModel(IProductService service) => _service = service;

    public List<Product> Products { get; set; } = [];

    public async Task OnGetAsync() => Products = await _service.GetAllAsync();
}
@page
@model IndexModel
<ul>
    @foreach (var p in Model.Products) { <li>@p.Name</li> }
</ul>

Razor Pages در برابر MVC

  • Razor Pages: هر صفحه خودکفا، مناسب فرم‌ها و صفحات ساده CRUD.
  • MVC: یک Controller چند Action را مدیریت می‌کند، مناسب زمانی که منطق مشترک زیادی بین چند صفحه/Action هست.

اشتباه رایج

❌ تکرار منطق مشترک (مثل اعتبارسنجی یا واکشی داده مشابه) در چند PageModel جدا به‌جای استخراج آن به یک Service مشترک — مزیت خودکفایی Razor Pages نباید به قیمت تکرار کد باشد.

منبع و مطالعه بیشتر

خلاصه

Razor Pages هر صفحه را با View و PageModel خودش خودکفا می‌کند، مناسب فرم‌ها و CRUD ساده. منطق مشترک بین صفحات را در Service جدا نگه دارید تا تکرار نشود. مرجع کامل: مستندات Razor Pages، Microsoft Learn.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←