In ASP.NET Core si possono scrivere interfacce web con MVC, Razor Pages o Blazor. Razor Pages è spesso sottovalutato, eppure è il modello più semplice da mantenere per molti progetti reali.
Una pagina, un modello
Ogni pagina ha un file .cshtml per il markup e una classe PageModel con i gestori delle richieste. Tutto ciò che riguarda una schermata sta in un posto solo.
public class ContattiModel(IEmailService email) : PageModel
{
[BindProperty]
public RichiestaContatto Input { get; set; } = new();
public void OnGet() { }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid) return Page();
await email.InviaAsync(Input);
TempData["Messaggio"] = "Grazie, ti risponderemo presto.";
return RedirectToPage();
}
}
Perché funziona bene
- Routing per file: la struttura delle cartelle è la struttura degli indirizzi.
- Sicurezza di default: protezione antiforgery attiva sui form senza configurazione.
- Pattern Post-Redirect-Get naturale, che evita invii doppi dei form.
- HTML lato server: ottimo per SEO, accessibilità e dispositivi lenti.
Gestori multipli nella stessa pagina
public async Task<IActionResult> OnPostEliminaAsync(int id) { /* ... */ return RedirectToPage(); }
public async Task<IActionResult> OnPostPubblicaAsync(int id) { /* ... */ return RedirectToPage(); }
<form method="post" asp-page-handler="Elimina" asp-route-id="@item.Id">
<button type="submit">Elimina</button>
</form>
Quando preferire altro
Se servono interfacce molto interattive, con aggiornamenti continui senza ricaricare la pagina, Blazor è più adatto. Se costruisci solo API per un'app mobile o un frontend separato, le Minimal API sono più snelle. Ma per siti istituzionali, aree riservate e gestionali, Razor Pages resta difficile da battere per semplicità.
Commenti (0)
Nessun commento ancora.