es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Blazor/Asp.Net 6) NavigationManager.NavigateTo no funciona en Firefox.

Recientemente comencé un nuevo proyecto de Blazor Server. Seguí un tutorial de IAmTimCorey para implementar varios idiomas.

Cuando intento navegar a mi controlador de idioma a través de

//query = ?culture=en-EN&redirectedUri=/?
NavigationManager.NavigateTo("/Culture/SetCulture" + query, true);

Funciona bien en Edge y Chrome, pero Firefox no hace nada.

Si llamo manualmente a la URL escribiéndola, todo funciona según lo previsto.

CultureController.cs

using Microsoft.AspNetCore.Localization;
usando Microsoft.AspNetCore.Mvc;

namespace BalzorMeetUpTest.Controllers
{
    [Route("[controller]/[action]")]
    public class CultureController : Controller
    {
        public IActionResult SetCulture(string culture, string redirectUri)
        {
            if (culture != null)
            {
                HttpContext.Response.Cookies.Append(
                    CookieRequestCultureProvider.DefaultCookieName,
                    CookieRequestCultureProvider.MakeCookieValue(
                        nueva RequestCulture(culture)));
            }

            return LocalRedirect(redirectUri);
        }
    }
}

También configuré el enrutamiento en Program.cs

//Dejaré aquí el código estándar
RequestLocalizationOptions GetLocalizationOptions()
{
    var cultures = builder.Configuration.GetSection("Cultures")
        .GetChildren().ToDictionary(x => x.Key, x => x.Value);

    var supportedCultures = cultures.Keys.ToArray();

    var localizationOptions = new RequestLocalizationOptions()
        .AddSupportedCultures(supportedCultures)
        .AddSupportedUICultures(supportedCultures);

    return localizationOptions;
}

app.UseRequestLocalization(GetLocalizationOptions());
app.UseRouting();
app.MapControllers();

¿Falta algo? ¿Tengo que habilitar alguna configuración específica en Firefox? Lo siento, soy bastante nuevo en Blazor y no encontré nada útil.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con la forma en que Firefox está manejando la cadena de consulta en la llamada NavigateTo. Una posible solución sería intentar codificar los parámetros de la cadena de consulta utilizando Uri.EscapeDataString como:

    NavigationManager.NavigateTo("/Culture/SetCulture?culture=" + Uri.EscapeDataString(culture) + "&redirectedUri=" + Uri.EscapeDataString(redirectUri), true);
    

    Además, puede ser útil verificar la consola del navegador en busca de cualquier error o registro que pueda proporcionar más información sobre por qué la navegación no funciona en Firefox.

Comments are closed.