從 JavaScript 呼叫 C# 函式
本教程重點介紹如何使用 Blazor 從 JavaScript 程式碼呼叫 C# 函式。
Blazor 是 Browser & Razor 的變種,它是一個開源和免費的 Web 框架,允許我們使用 C# 開發互動式 Web 使用者介面 (UI)。
我們使用 Microsoft Visual Studio 製作 Blazor 應用程式;你也可以從這裡下載。
使用 Blazor 從 JavaScript 程式碼呼叫 C# 函式
讓我們建立一個 Blazor 應用程式來逐步開始編碼。
開啟 Microsoft Visual Studio 並選擇建立新專案
。
選擇 Blazor WebAssembly 應用
,然後單擊 下一步
。
寫下你的專案名稱,選擇要儲存的位置,選中核取方塊以將解決方案保留在同一目錄中,然後單擊下一步
。
在下一個螢幕上保持預設設定,然後單擊建立
。它將為我們建立預設檔案和資料夾。
請參閱下面給出的螢幕截圖。
在 wwwroot
中建立一個名為 scripts
的新資料夾。右鍵單擊 scripts
資料夾並轉到 Add->Razor Component
建立一個 JavaScript 檔案。
它開啟一個新視窗,選擇 JavaScript File
,將其名稱寫為 example.js
,然後單擊 Add
。
使用以下程式碼行將 JavaScript 檔案附加到 index.html
(它位於 wwwroot
)。
<script src="scripts/example.js"></script>
右鍵單擊 Pages
資料夾並轉到 Add->Razor 元件
。從彈出的視窗中選擇 Razor Component
,將其命名為 CallDotNetFromJavaScript.razor
,然後單擊 Add
。
右鍵單擊 Pages
資料夾並再次轉到 Add->Razor Component
,但這次選擇 Class
,將其命名為 CallDotNetFromJavaScript.razor.cs
,然後單擊 Add
。
現在,你可以在 Pages
資料夾中看到兩個檔案 CallDotNetFromJavaScript.razor
和 CallDotNetFromJavaScript.razor.cs
,如下所示。
現在,通過新增以下程式碼來修改 CallDotNetFromJavaScript.razor
檔案。
@page "/dotnetinjs"
<h1> Learn How to Call DotNet From JavaScript Code</h1>
<br />
<div class="row">
<div class="col-md-4">
<h4>Call static method from JS</h4>
</div>
<div class="col-md-2">
<button type="button" class="btn btn-success" onclick="jsMethods.checkNumber()">
Check Number
</button>
</div>
<div class="col-md-4">
<span id="string-result" class="form-text"></span>
</div>
</div>
<hr />
通過新增以下程式碼修改 Index.razor
檔案。
@page "/"
<ul>
<li>
<a href="/dotnetinjs">Call from JavaScript</a>
</li>
</ul>
在 CallDotNetFromJavaScript.razor.cs
檔案中建立一個靜態方法(請記住,我們可以通過這種技術呼叫靜態方法和那些作為例項化類的方法)。
我們只是實現了一個函式 checkNumber(int number)
來檢查給定的數字是偶數還是奇數。
關鍵是理解 [JSInvokable]
屬性;它表示緊隨其後的方法 ([JSInvokable]
) 將從 JavaScript 程式碼呼叫/呼叫。
public partial class CallDotNetFromJavaScript{
[JSInvokable]
public static string checkNumber(int number){
if(number%2 == 0)
return $"The Number {number} is Even";
else
return $"The Number {number} is Odd";
}
}
在 scripts
資料夾中的 example.js
檔案中編寫以下程式碼。
var jsMethods = {};
jsMethods.checkNumber = function () {
const number = prompt("Enter your number");
DotNet.invokeMethodAsync("BlazorApplication", "checkNumber", parseInt(number))
.then(result => {
var el = document.getElementById("string-result");
el.innerHTML = result;
});
}
你可能有一個問題,我們想從 JavaScript 呼叫 C# 方法,但使用 DotNet
物件。DotNet
物件用於從 JS 程式碼(JavaScript 程式碼)呼叫/呼叫 C# 方法。
還在迷茫嗎?再次執行專案;當它顯示介面時,按F12,轉到 Console
標籤頁,然後輸入 DotNet
。
請參閱以下螢幕截圖。
你可能已經觀察到 DotNet
物件包含兩個屬性,invokeMethod
和 invokeMethodAsync
,用於從 JavaScript 程式碼呼叫 C# 靜態方法。我們在本教程中使用 invokeMethodAsync
。
讓我們再次執行 blazor 應用程式以從 JavaScript 呼叫 C# 函式並檢查其行為。
輸出:
很好! 我們從 C# 方法獲得響應,以檢查數字是偶數還是奇數。