Vaatimukset: Edellinen artikkeli käsitteli verkkokäyttöliittymän ja WinForm-sovelluksen toteuttamista viestien lähettämiseksi, mutta vain viesti lähetettiin onnistuneesti, eikä vastaustietoja saatu hankituksi. Entä jos C#-asiakasohjelma kutsuu webin funktiometodin saadakseen palautustuloksen? Ja miten verkko kutsuu C#-koodia ja saa palautusarvon?
Arvostelu:
Ensiksi tarkastellaan toteutuksen renderöintiä, verkkosivusto kutsuu WinForm-sovellustaHanki lehtiödataa, WinForm-sovellusKutsu verkon abc-menetelmää saadaksesi tuottoarvonSeuraavasti:
C# kutsuu Web-funktiometodia
Tässä tilanteessa näytetään, miten JavaScript ajetaan verkossa. Tässä menetelmässä isäntäsovellus määrittää suoritettavan JavaScript-koodin ja välittää koodin verkkoon ExecuteScriptAsync-toiminnolla. ExecuteScriptAsync-funktio palauttaa JavaScript-tuloksen ExecuteScript-kutsujalle.
Angular index.html -sivukoodi on seuraava:
Frontend määrittelee pääasiassa abc-funktion.
Winform kutsuu webin abc-funktiota seuraavalla koodilla:
Verkkosivu kutsuu C#-funktiometodia
Natiiviesineiden välittäminen verkkoon. Menetelmä, jolla objekti kutsutaan verkosta, kutsutaan sitten.
Käyttääksesi viestiä, joka edustaa metodikutsua, käytä AddHostObjectToScript API:ta. Korkealla tasolla tämä API mahdollistaa natiivien (isäntä)objektien altistamisen verkkoon ja toimimisen välityspalvelina. Käytä window.chrome.webview.hostObjects. {name}>a0> pääsy näihin objekteihin. Viitedokumentaatio:Hyperlinkin kirjautuminen on näkyvissä.
Luo uusi painike verkkosivulle, klikkaa painiketta soittaaksesi C#-koodia saadaksesi järjestelmän nykyisen lehtiön tiedot.
Angular app.component.html -koodi on seuraava:
app.component.ts koodi on seuraava:
Front-endin JS-koodissa on synkronisia ja asynkronisia kutsuja.
c# määrittele WebView2HostObject-isäntäobjekti seuraavalla koodilla:
Huomautus: Mukautetut WebView2HostObject-luokat on tunnistettava[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]ominaisuus, muuten JS ei pääsisi käsiksi luokkaan.
Lisää sitten uusi määritelty instanssi AddHostObjectToScript(String,Object) -toiminnolla seuraavalla koodilla:
Lopuksi, klikkaa etupään painiketta saadaksesi lehtiödatan, vaikutus on seuraava:
(Loppu)
|