未定义在 Dot Net Core/DotNet 中从 javascript 调用 C# 函数

The*_*237 0 javascript c# .net-core

所以我对 Dot Net Core 的东西还比较陌生,所以请耐心等待。

我的最终目标是从项目中的 Javascript 代码调用 C# 代码,反之亦然。因此,如果有一种比我正在做的更简单的方法,那就太好了。我尝试按照此处的教程从 js 运行 C# 函数:

https://learn.microsoft.com/en-us/aspnet/core/blazor/call-dotnet-from-javascript?view=aspnetcore-3.1#static-net-method-call

我遇到的问题是在网页上的第二个代码窗口中,这是一行(它是 javascript 代码):

DotNet.invokeMethodAsync('BlazorSample', 'ReturnArrayAsync')
      .then(data => {
        data.push(4);
          console.log(data);
      });
Run Code Online (Sandbox Code Playgroud)

当我尝试在我自己的 dot net core 站点上运行此函数时,出现错误:“Uncaught ReferenceError:DotNet 未定义”。我一直在谷歌上搜索尽可能多的东西,但我似乎找不到任何出现该错误的原因。我找不到任何可以放置的 import/require 类型语句,而且由于我是 DotNet Core 的新手,所以我真的陷入了困境。有谁知道我如何在 javascript 中获取此模块,或者我可以通过其他方式实现此目的?

Mat*_*rla 5

如果您的唯一目标是在从客户端 javascript 调用的服务器上运行 C# 代码,那么您应该查看 SignalR (此处介绍 SignalR)

您引用的文档适用于 Blazor,用于使用 C# 构建客户端应用程序。

您正在使用示例项目吗?(例如:Blazor WebAssembly 示例应用程序)

如果您没有运行示例项目:您是否在自己的脚本之前包含了 Blazor WebAssembly 脚本?

<script src="_framework/blazor.webassembly.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 啊,我没有意识到这是一个 blazor 教程 - 并且可能也将 blazor 与 razor 混淆了。我正在做一个 ASP.NET Core 视觉工作室模板,看起来您引用的 SignalR 将满足我的需要! (2认同)