Rufen Sie eine nicht statische C#-Methode aus einer statischen Methode in Blazor auf, die von Javascript aufgerufen wird DotNet.invokeMethodAsync

RA19

Soweit ich weiß, können wir einen C#-Eigenschaftswert in Blazor von JavaScript aus ändern, indem wir die Methode DotNet.invokeMethodAsync aufrufen. Ich habe die folgenden Funktionen, aber in dieser Methode möchte ich auch eine nicht statische Methode aufrufen.

JS-Datei:

[script.js]

function ChangeContentJS() {
    DotNet.invokeMethodAsync('InvokeFromJsApp', "ChangeParaContentValue", "New Content");
}

Rasierer Seite:

     [Index.razor]
    
    @page "/"
    
    @inject IJSRuntime JSRuntime
    
    <h1>Change C# property value from JavaScript</h1>
    <br />
    <button @onclick='ButtonClickHandler'>Change Content - JS</button>
    <br />
    <p>@ParaContent</p>
    
    @code {
        public static string ParaContent = "Some Text Content"; 

        public async Task ButtonClickHandler()
        {
            await JSRuntime.InvokeAsync<string>("ChangeContentJS");
        }
    
        [JSInvokable]
        public static void ChangeParaContentValue(string value)
        {
            ParaContent = value;
            RunNewCode(); //DOESNT WORK AS ITS A NON-STATIC METHOD
        }

        public void RunNewCode()
        {
           jsRuntime.InvokeVoidAsync("RunFunction");
        }
    }

Ich versuche, eine nicht statische Methode in einer statischen Methode auszuführen (IN BLAZOR APPLICATION). Wie kann ich diese Methode aufrufen?

Ich habe versucht, die folgende Methode statisch zu machen und habe den folgenden Fehler erhalten:

  public static void RunNewCode()
            {
               jsRuntime.InvokeVoidAsync("RunFunction");
            }

CS0120: Für das nicht statische Feld, die Methode oder die Eigenschaft 'JSRuntime' ist eine Objektreferenz erforderlich

Wie mache ich das statisch: @inject IJSRuntime JSRuntime

JHBonarius

Das ist eigentlich in den Dokumenten beschrieben

Summery: Erstellen Sie eine statische Actionfür das Update und registrieren Sie die lokale Instanz

private static Func<string, Task> ChangeParaContentActionAsync;

private async Task LocalChangeParaContentValueAsync(string value)
{
    ParaContent = value;
    await jsRuntime.InvokeVoidAsync("RunFunction");
}

protected override void OnInitialized()
{
    base.OnInitialized();
    ChangeParaContentActionAsync= LocalChangeParaContentValueAsync;
}

[JSInvokable]
public static async Task ChangeParaContentValue(string value)
{
    await ChangeParaContentActionAsync.Invoke(value);
}

(nicht getestet)

ANMERKUNG Denken Sie daran, dass Sie die Methode JSInvokable auch dann aufrufen können, wenn die Komponente nicht geladen ist (dh keine Instanz). Dies könnte auf undefiniertes Verhalten schließen!

edit: geändert zu async Task, wegen der asynchronen InvokeVoidAsyncMethode

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So rufen Sie eine nicht statische Methode von einer statischen Funktion in einer Klasse in PHP auf

Rufen Sie eine statische Methode in einer anderen statischen Methode einer Klasse in Javascript auf

So rufen Sie eine abstrakte Methode aus einer abstrakten Klasse auf, die von der ererbten Klasse aufgerufen wird

Rufen Sie die nicht statische Methode von einer anderen Seite aus auf

Warum ist der Zugriff auf eine statische Methode von einer nicht statischen Methode aus schlecht?

Eine Methode, die von einer statischen Methode aufgerufen wird, kann nicht überprüft werden

Powershell: So rufen Sie eine statische Methode von der anderen statischen Methode auf

Rufen Sie die nicht statische Methode in der statischen Methode JAVA auf

Android: So rufen Sie eine nicht statische Methode einer Aktivität von AsyncTask aus auf (über doInBackground)

So rufen Sie eine nicht statische öffentliche Methode aus einer Singleton-Klasse auf, die Google @Inject verwendet

Wie rufe ich eine nicht statische Methode von einer statischen Methode derselben Klasse auf?

C# Rufen Sie eine nicht-statische Methode einer Instanz per Zeichenfolge auf

Rufen Sie die Methode in MainLayout von einer Seitenkomponente in Blazor aus auf

Rufen Sie eine Methode in einem Fragment aus einer Klasse auf, die von RecyclerView.Adapter erweitert wird

Zugriff auf eine nicht statische Methode aus dem statischen Kontext

So rufen Sie eine Methode von einer Referenz auf, die an eine Anmerkung in Java gesendet wird

So rufen Sie die Methode auf, die gerade von einer anderen Methode aufgerufen wurde

Rufen Sie die allgemeinere Methode von einer bestimmten aus auf

Die nicht statische Methode kann nicht von der nicht statischen Methode in Android Studio aufgerufen werden

Blazor: Aufrufen der statischen C # -Methode von der JS-Funktion, die von HTML onclick aufgerufen wird - warum kann der JS die Methode nicht finden?

Rufen Sie eine Methode auf, wenn eine Eigenschaft aufgerufen wird

So rufen Sie eine Methode auf, die die aktuelle Methode in c # aufgerufen hat

Wie verspotte ich eine letzte statische Variable, die von einer statischen Methode festgelegt wird?

Rufen Sie eine nicht statische Variable aus einer statischen Funktion auf

Rufen Sie in Clojure eine nicht statische Java-Methode auf

Freemarker: Rufen Sie eine statische util-Methode aus einer Vorlagendatei auf (* .ftl).

Gradle: Rufen Sie eine statische Groovy-Methode aus einer Aufgabe auf

Rufen Sie eine statische Methode aus einer anderen Klasse in Python auf

Rufen Sie eine statische Methode aus einer anderen Klasse auf, ohne ein Objekt in Java zu erstellen

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv