Adresse IP, etc. Très souvent, lorsque les utilisateurs demandent comment le faire dans l'application Server Blazor, on leur dit que ce n'est pas possible, ou parfois ils proposent des solutions partielles utilisant JSInterop. Mais cela peut-il se faire sans recourir à JSInterop? Voici la réponse ...
Dans votre démarrage> ConfigureServices:
services.AddControllers();
Dans votre démarrage> Configurer:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
ajouter un nom de dossier: Contrôleurs
ajoutez un nom de contrôleur: InitController
ajoutez une méthode comme celle-ci:
[Route("[controller]/[action]")]
public class InitController : Controller
{
public IActionResult UserInfo(string redirectUri)
{
var request = Request.HttpContext;
return LocalRedirect(redirectUri);
}
}
dans la demande variable, toutes les données existent
enfin pour rediriger l'utilisateur depuis des pages ou des composants, utilisez ce code:
@inject NavigationManager NavigationManager
@code{
protected override Task OnInitializedAsync ()
{ var uri = new Uri(NavigationManager.Uri)
.GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var query = $"?redirectUri={Uri.EscapeDataString(uri)}";
NavigationManager.NavigateTo("/Init/UserInfo" + query, forceLoad: true);
StateHasChanged();
return base.OnInitializedAsync();
}
}