1. 程式人生 > >ASP.NET Core Blazor WebAssembly 之 .NET JavaScript互調

ASP.NET Core Blazor WebAssembly 之 .NET JavaScript互調

Blazor WebAssembly可以在瀏覽器上跑C#程式碼,但是很多時候顯然還是需要跟JavaScript打交道。比如操作dom,當然跟angular、vue一樣不提倡直接操作dom;比如瀏覽器的後退導航。反之JavaScript也有可能需要呼叫C#程式碼來實現一些功能,畢竟客戶的需求是千變萬化的,有的時候只能通過一些hack的手段來實現。 ## .NET呼叫JavaScript函式 ### 使用JSRuntime.InvokeVoidAsync呼叫無返回值的JavaScript函式 顯然我們的.NET類庫裡不會有JavaScript內建的alert方法來顯示提示,這裡演示下如何呼叫JavaScript的alert方法: ```

.net call javascript

@inject IJSRuntime jsRuntime @code { private void CallJs() { jsRuntime.InvokeVoidAsync("alert", "this message from .net runtime ."); } } ``` ![](https://s1.ax1x.com/2020/06/11/tqmG2F.gif) ### 使用JSRuntime.InvokeVoidAsync呼叫具有返回值的JavaScript函式 我們在JavaScript環境定義一個加法函式然後.NET這邊呼叫拿到結果: ``` ``` > 注意:JavaScript程式碼要放到wwwroot/index.html頁面上裡,不能直接放在元件裡。 元件程式碼: ```

.net call javascript

sum: @sum @inject IJSRuntime jsRuntime @code { private int sum = 0; private async void CallJs() { sum = await jsRuntime.Inv