Appeler une méthode Blazor à partir de JavaScript

blazor javascript visual-studio

Question

J'expérimente Blazor dans Visual Studio, en particulier en appelant du code Blazor à partir de JavaScript. Je suis raisonnablement confiant d'avoir toutes les bonnes bibliothèques en place. Cependant, lorsque j'essaie d'appeler ma méthode Blazor avec invokeMethodAsync, je reçois le message "aucun répartiteur d'appels .net n'a été défini". Dans mon fichier Index.Html, j'ai ceci:

<script> DotNet.invokeMethodAsync("BlazorFour.App", "HelloYou").then(data => alert(data), reason => alert(reason)); </script>

(C'est l'alerte (raison) qui génère le message d'erreur)

J'ai ajouté un fichier de classe à mon projet Blazor et il contient ceci:

using Microsoft.JSInterop;
using System.Threading.Tasks;
public class HelloWorld
{
[JSInvokable]
public static Task<string> HelloYou()
{
    return Task.FromResult("Hello, ");
}
}

J'ai utilisé tous les modèles de Visual Studio et l'utilitaire de ligne de commande dotnet -new blazor pour créer mes points de départ, mais obtenir le même message dans tous les projets. Il me semble probable que je manque quelque chose de fondamental ici.

Réponse populaire

Peter Vogel: Ce serait formidable si vous pouviez appeler les méthodes Blazor C # à partir de votre code JavaScript. Pour le moment, ce n'est pas tout à fait possible: il ne suffit pas d'appeler Blazor C # à partir de JavaScript (vous recevrez un message indiquant qu'un répartiteur d'appels n'est pas disponible).

Ce que vous pouvez faire, toutefois, une fois que votre code Blazor est en cours d’exécution, appelez le code JavaScript à partir de votre code C #. Une fois que vous avez fait cela, votre code JavaScript peut, à son tour, appeler le code Blazor.

J'espère que cela résoudra le problème ...




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi