Novedades de ASP.NET Core 3.1

En este artículo se resaltan los cambios más importantes de ASP.NET Core 3.1, con vínculos a la documentación pertinente.

Compatibilidad de clases parciales con componentes de Razor

Ahora los componentes de Razor se generan como clases parciales. El código de un componente de Razor se puede escribir con un archivo de código subyacente definido como una clase parcial en lugar de definir todo el código del componente en un solo archivo. Para más información, vea Compatibilidad de clases parciales.

El Asistente de etiquetas de componente de y transferencia de parámetros a componentes de nivel superior

En Blazor con ASP.NET Core 3.0, los componentes se representaban en páginas y vistas mediante una aplicación auxiliar de HTML (Html.RenderComponentAsync). En ASP.NET Core 3.1, un componente se representa desde una página o vista con el nuevo asistente de etiquetas de componente:

<component type="typeof(Counter)" render-mode="ServerPrerendered" />

La aplicación auxiliar de HTML sigue siendo compatible con ASP.NET Core 3.1, pero se recomienda el asistente de etiquetas de componente.

Ahora, las aplicaciones Blazor Server pueden pasar parámetros a componentes de nivel superior durante la representación inicial. Anteriormente, solo se podían pasar parámetros a un componente de nivel superior por medio de RenderMode.Static. Con esta versión, se admiten tanto RenderMode.Server como RenderMode.ServerPrerendered. Los valores de parámetro especificados se serializan como JSON y se incluyen en la respuesta inicial.

Por ejemplo, se puede realizar la representación previa de un componente Counter con una cantidad de incremento (IncrementAmount):

<component type="typeof(Counter)" render-mode="ServerPrerendered" 
    param-IncrementAmount="10" />

Para obtener más información, vea Integración de componentes en aplicaciones Razor Pages y MVC.

Compatibilidad con las colas compartidas en HTTP.sys

HTTP.sys admite la creación de colas de solicitudes anónimas. En ASP.NET Core 3.1, hemos agregado la capacidad de crear o adjuntar contenido a una cola de solicitudes existente de HTTP.sys con nombre. La operación de crear o adjuntar contenido a una cola de solicitudes existente de HTTP.sys con nombre habilita escenarios en los que el proceso del controlador HTTP.Sys propietario de la cola es independiente del proceso del cliente de escucha. Esta independencia permite conservar las conexiones existentes y las solicitudes en cola entre los reinicios del proceso del cliente de escucha:

public static IHostBuilder CreateHostBuilder(string[] args) =>
     Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // ...
            webBuilder.UseHttpSys(options =>
            {
                options.RequestQueueName = "MyExistingQueue";
                options.RequestQueueMode = RequestQueueMode.CreateOrAttach;
            });
        });

Cambios importantes en las cookies de SameSite

El comportamiento de las cookies de SameSite ha cambiado para reflejar los próximos cambios del explorador. Esto puede afectar a escenarios de autenticación como AzureAd, OpenIdConnect o WsFederation. Para más información, vea Trabajo con cookies SameSite en ASP.NET Core.

Impedir acciones predeterminadas para eventos en aplicaciones Blazor

Use el atributo de directiva @on{EVENT}:preventDefault para evitar la acción predeterminada de un evento. En el ejemplo siguiente, se impide la acción predeterminada de mostrar el carácter de la clave en el cuadro de texto:

<input value="@_count" @onkeypress="KeyHandler" @onkeypress:preventDefault />

Para más información, vea Impedir acciones predeterminadas.

Detener la propagación de eventos en aplicaciones Blazor

Use el atributo de directiva @on{EVENT}:stopPropagation para detener la propagación de eventos. En el ejemplo siguiente, al activar la casilla se impide que los eventos de clic del elemento <div> secundario se propaguen al elemento <div> principal:

<input @bind="_stopPropagation" type="checkbox" />

<div @onclick="OnSelectParentDiv">
    <div @onclick="OnSelectChildDiv" @onclick:stopPropagation="_stopPropagation">
        ...
    </div>
</div>

@code {
    private bool _stopPropagation = false;
}

Para más información, vea Detener la propagación de eventos.

Errores detallados durante el desarrollo de aplicaciones Blazor

Cuando una aplicación Blazor no funciona correctamente durante el desarrollo, recibir información detallada del error de la aplicación ayuda a solucionar el problema. Cuando se produce un error, en las aplicaciones Blazor se muestra una barra dorada en la parte inferior de la pantalla:

  • Durante el desarrollo, la barra dorada le dirige a la consola del explorador, donde puede ver la excepción.
  • En producción, la barra dorada informa al usuario de que se ha producido un error y recomienda actualizar el explorador.

Para más información, vea Control de errores en aplicaciones Blazor de ASP.NET Core.