Mejores prácticas para trabajar con .NET Razor en 2025 (y evitar errores comunes)

En 2025, .NET Razor sigue siendo una de las tecnologías más eficientes para crear UIs dinámicas y seguras, especialmente en aplicaciones empresariales o integradas con APIs modernas.

En este artículo te compartiré las mejores prácticas para trabajar con Razor en .NET 9, con ejemplos reales, errores comunes que debes evitar y consejos basados en mi experiencia práctica en proyectos profesionales.

¿Qué es .NET Razor?

Razor es un motor de plantillas para .NET que permite combinar C# con HTML de forma fluida. Se utiliza principalmente en Razor Pages, MVC Views y componentes Blazor.

Un archivo Razor tiene extensión .cshtml (en Razor Pages y MVC) o .razor (en Blazor) y permite escribir código como:

<h1>Hola, @Model.Nombre</h1>
<p>Hoy es @DateTime.Now.ToShortDateString()</p>

¿Por qué es importante en 2025?

En un mundo dominado por frameworks como React o Next.js, Razor sigue siendo relevante porque:

  • Permite SSR (renderizado del lado del servidor) con excelente rendimiento.
  • Es ideal para backoffice, intranets y dashboards empresariales.
  • Es compatible con Blazor, facilitando la transición a SPAs si se requiere.
  • .NET 9 ha optimizado aún más la compilación y la separación de lógica UI.

Además, Razor es una excelente opción cuando trabajas con arquitecturas limpias, DDD o microservicios con una interfaz ligera.

Cómo implementar una página Razor desde cero

Paso 1: Crear el proyecto

dotnet new razor -n MiAppRazor
cd MiAppRazor
dotnet run

Esto genera una estructura con:

  • Pages/ → Archivos .cshtml
  • Program.cs y Startup.cs o builder (en .NET 6+)

Paso 2: Crear una página Razor personalizada

Crea el archivo Pages/MiPagina.cshtml:

@page
@model MiPaginaModel

<h2>Bienvenido, @Model.Nombre</h2>

Y su clase code-behind MiPagina.cshtml.cs:

public class MiPaginaModel : PageModel
{
    public string Nombre { get; set; } = "Desarrollador .NET";

    public void OnGet()
    {
        // Lógica del lado del servidor
    }
}

Mejores prácticas para Razor en .NET 9

1. Separar lógica de presentación y backend

Evita poner lógica de negocio en archivos .cshtml. Usa PageModel o ViewModel para mantener limpio el código HTML.

2. Usar Tag Helpers en lugar de HTML hardcodeado

Mal:

<form method="post" action="/Login">
    <input type="text" name="usuario" />
</form>

Bien:

<form asp-page="/Login" method="post">
    <input asp-for="Usuario" class="form-control" />
</form>

Los Tag Helpers mejoran la seguridad y mantienen la coherencia con rutas y modelos.

3. Evitar lógica compleja en la vista

@* Mala práctica *@
@if (user.IsAdmin && DateTime.Now.DayOfWeek == DayOfWeek.Monday)
{
    <p>Es lunes y eres admin</p>
}

En su lugar, prepara esta lógica en el PageModel.

Errores comunes y cómo evitarlos

❌ Usar ViewBag o ViewData en lugar de modelos fuertemente tipados

  • Esto rompe el tipado y complica el mantenimiento.
  • Usa modelos con propiedades claras y validadas.

❌ No usar validaciones del lado del cliente

.NET permite usar DataAnnotations para validar campos automáticamente:

En su lugar, prepara esta lógica en el PageModel.

Errores comunes y cómo evitarlos
❌ Usar ViewBag o ViewData en lugar de modelos fuertemente tipados
Esto rompe el tipado y complica el mantenimiento.

Usa modelos con propiedades claras y validadas.

❌ No usar validaciones del lado del cliente
.NET permite usar DataAnnotations para validar campos automáticamente:

csharp
Copiar
Editar
[Required]
[StringLength(50)]
public string Nombre { get; set; }

Y en la vista:

<input asp-for="Nombre" class="form-control" />
<span asp-validation-for="Nombre" class="text-danger"></span>

Preguntas frecuentes

¿Razor es compatible con Blazor?

Sí, Blazor usa Razor para sus componentes, pero con sintaxis diferente (.razor en lugar de .cshtml). Puedes migrar Razor Pages a Blazor si necesitas una SPA.

¿Razor sigue siendo relevante frente a React o Vue?

Definitivamente. Razor es ideal para aplicaciones internas, sistemas empresariales y proyectos donde el SEO no es prioritario o se prefiere SSR nativo.

¿Puedo usar Razor con APIs externas?

Sí, puedes consumir APIs REST o gRPC en el backend y mostrar los datos en Razor usando el patrón PageModel.

Ejemplo práctico: página Razor que consume una API REST

public class MiPaginaModel : PageModel
{
    public List<Producto> Productos { get; set; }

    public async Task OnGet()
    {
        using var client = new HttpClient();
        var json = await client.GetStringAsync("https://api.misitio.com/productos");
        Productos = JsonSerializer.Deserialize<List<Producto>>(json);
    }
}
@foreach (var producto in Model.Productos)
{
    <div>@producto.Nombre - $@producto.Precio</div>
}

Recursos oficiales y documentación actualizada

Conclusión

Trabajar con Razor en .NET 9 no solo es viable en 2025, sino altamente recomendable para ciertos tipos de proyectos. Aplicar buenas prácticas como separación de responsabilidades, uso de Tag Helpers y validación desde el modelo mejora la mantenibilidad, seguridad y rendimiento de tus aplicaciones.

Te puede interesar...

Deja un comentario