Chiamare un metodo Blazor da JavaScript

blazor javascript visual-studio

Domanda

Sto facendo esperimenti con Blazor in Visual Studio, in particolare con la chiamata del codice Blazor da JavaScript. Sono ragionevolmente sicuro di avere tutte le librerie giuste. Tuttavia, quando provo a chiamare il metodo Blazor con invokeMethodAsync, viene visualizzato il messaggio "no. Net call dispatcher è stato impostato". Nel mio file Index.Html, ho questo:

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

(È l'avviso (motivo) che genera il messaggio di errore)

Ho aggiunto un file di classe al mio progetto Blazor e contiene questo:

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

Ho usato tutti i modelli in Visual Studio e il dotnet - nuovo strumento di riga di comando blazor per creare i miei punti di partenza ma ottenere lo stesso messaggio in tutti i progetti. Mi sembra probabile che mi manchi qualcosa di fondamentale qui.

Risposta popolare

Peter Vogel: Sarebbe bello se potessi chiamare i metodi Blazor C # dal tuo codice JavaScript. In questo momento, non è del tutto possibile: semplicemente chiamare Blazor C # da JavaScript non funzionerà (riceverai un messaggio su un dispatcher di chiamate che non è disponibile).

Quello che puoi fare, tuttavia, è una volta che il tuo codice Blazor è in esecuzione, chiama il codice JavaScript dal tuo codice C #. Dopo averlo fatto, il codice JavaScript può, a sua volta, chiamare il codice Blazor.

Spero che questo risolva il problema ...




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché