برنامهنویسان داتنت در سمت ویو ابزاری دارند که هرچند در دیباگینگ آزاردهنده است اما مزایایی که ارائه میدهد، راضیکننده است، اسم آن Razor است. در واقع ریزر موتور Viewای هست با زبان تلفیقی C# و HTML تلاش میکند که صفحاتی با منطق برنامهنویسی تولید کنیم. وجود تگ هلپرها در ویو کار توسعه در View را جذابتر هم کرده است.
اما این مطلب در خصوص این موتور پیشرفته نیست. که در خصوص صفحات ریزر هستند. صفحاتی که آمده است تا با الهام از گذشته (وبفرم) به سادهتر شدن سیکل توسعه کمک کند. الگوی MVC معمولا نباید در هر جایی استفاده شود. خیلی اوقات پیادهکردن منطق یک صفحهی تماس با ما نیازی به پیچیدگی زیاد ندارد یک View است و یک لاجیک. این استکه ماکروسافت در کنار استفاده از MVC این امکان را فراهم کرد که بتوانیم از قسمتی از فریمورک MVC به نام Razor Page، بتوانیم با داشتن Viewهای ریزر و PageModelهای پشت آن توسعه را سریعتر پیش ببریم.
در ادامه نکاتی از ریزر پیج آمده است
services
.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/index", "{*url}");
}
@page
@using MyApp
@using MyApp.Pages
@using Microsoft.AspNetCore.Mvc.RazorPages
@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@model ContactModel
<html>
<body>
...
------
sing Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyApp.Pages
{
public class ContactModel : PageModel
{
public ContactModel(ApplicationDbContext db)
{
Db = db;
}
[BindProperty]
public Contact Contact { get; set; }
private ApplicationDbContext Db { get; }
public async Task<IActionResult> OnPostAsync()
...
@page
@using MyApp
@using Microsoft.AspNetCore.Mvc.RazorPages
@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@inject ApplicationDbContext Db
@functions {
[BindProperty]
public Contact Contact { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (ModelState.IsValid)
{
Db.Contacts.Add(Contact);
await Db.SaveChangesAsync();
return RedirectToPage();
}
return Page();
}
}
<html>
<body>
...
<img src="~/images/asplogo.png" asp-append-version="true">
<cache expires-after="@TimeSpan.FromSeconds(120)">
@DateTime.Now
</cache>