从 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# 方法获得响应,以检查数字是偶数还是奇数。