Požiadavky: Predchádzajúci článok sa zaoberal tým, ako implementovať webové rozhranie a aplikáciu WinForm na vzájomnú komunikáciu pri odosielaní správ, ale úspešne bola odoslaná iba správa a informácie o odpovedi nebolo možné získať. Čo ak klient v C# zavolá funkčnú metódu webu, aby získal výsledok? A ako web volá kód v C# a získava vrátenú hodnotu?
Revízia:
Najprv sa pozrime na vizualizácie implementácie, ktorú webová stránka nazýva aplikáciou WinFormZískajte dáta zo schránky, aplikácia WinFormZavolajte metódu abc na webe, aby ste získali výnosnú hodnotuTakto:
C# volá metódu webovej funkcie
Tento scenár ukazuje, ako spustiť JavaScript na webe. Pri tejto metóde hostiteľská aplikácia špecifikuje JavaScriptový kód na spustenie a odovzdáva kód webu pomocou ExecuteScriptAsync. Funkcia ExecuteScriptAsync vráti výsledok JavaScriptu volajúcemu ExecuteScript.
Kód stránky Angular index.html je nasledovný:
Frontend hlavne definuje abc funkciu.
Winform volá abc funkciu webu pomocou nasledujúceho kódu:
Webová stránka volá metódu funkcie v C#
Odovzdávanie natívnych objektov na web. Potom sa nazýva metóda volania objektu z webu.
Na použitie správy, ktorá reprezentuje volanie metódy, použite API AddHostObjectToScript. Na vysokej úrovni toto API umožňuje natívnym (hostiteľským) objektom byť vystavené webu a pôsobiť ako proxy. Použite windows.chrome.webview.hostObjects. {name}>a0> prístup k týmto objektom. Referenčná dokumentácia:Prihlásenie na hypertextový odkaz je viditeľné.
Vytvorte nové tlačidlo na webovej stránke, kliknite na tlačidlo na zavolanie C# kódu, aby ste získali dáta aktuálnej schránky systému.
Kód Angular app.component.html je nasledovný:
app.component.ts kód je nasledovný:
Front-end JS kód obsahuje synchronné a asynchrónne volania.
c# definuje hostiteľský objekt WebView2HostObject s nasledujúcim kódom:
Poznámka: Vlastné triedy WebView2HostObject musia byť označené[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]property, inak by JS nemal prístup k tejto triede.
Potom pridajte novo definovanú inštanciu pomocou AddHostObjectToScript(String,Object) s nasledujúcim kódom:
Nakoniec kliknite na tlačidlo na prednej strane pre získanie údajov zo schránky, efekt je nasledovný:
(Koniec)
|