【问题标题】:Calling C# function from javascript in Dot Net Core/DotNet is not defined未定义在 Dot Net Core/DotNet 中从 javascript 调用 C# 函数
【发布时间】:2020-06-17 04:53:15
【问题描述】:

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

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

https://docs.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);
      });

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

【问题讨论】:

  • 您是在创建 AspNetCore(也许是 MVC?)站点,还是在创建 Blazor 站点?您引用的 js(实际上是整个示例)都是关于 Blazor 的。
  • @SamAxe 当我在 Visual Studio 中创建项目时,我相信我选择了“ASP.NET Core Web 应用程序”模板。所以我可能需要与本教程不同的方式,因为我没有使用 Blazor 应用程序?

标签: javascript c# .net-core


【解决方案1】:

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

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

您使用的是示例项目吗? (例如:Blazor WebAssembly Sample App

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

<script src="_framework/blazor.webassembly.js"></script>

【讨论】:

  • 啊,我没有意识到这是一个 blazor 教程 - 并且可能还将 blazor 与 razor 混淆了。我正在做一个 ASP.NET Core Visual Studio 模板,看起来你引用的 SignalR 可以满足我的需要!
猜你喜欢
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多