【发布时间】:2020-07-23 13:19:50
【问题描述】:
我正在使用invokeMethodAsync 从Javascript 调用C# 方法。一天前我让它工作了,但从那以后它就坏了,而且恢复我的更改似乎也无法修复它。
错误:System.ArgumentException: The assembly 'HelloWorld' does not contain a public invokable method with [JSInvokableAttribute("GetCodeFromList")].
JS:
DotNet.invokeMethodAsync('HelloWorld', 'GetCodeFromList')
.then(data => {
data.push(result.codeResult.code);
}
);
result.codeResult.code 是我想在 C# 端接收的号码。我已经确认号码是正确的。
C#:
[JSInvokable]
public void GetCodeFromList(long jsCode)
{
code = codes.Where(p => p.SecretCode.Equals(jsCode)).FirstOrDefault();
StateHasChanged();
}
我有另一个 .razor 文件,其中我有一个也称为 GetCodeFromList 的方法,我也希望使用相同的调用可以访问它,但我尝试完全删除它,但这并没有解决问题。
【问题讨论】:
-
你需要一个
DotNetObjectReference来调用一个非静态函数:docs.microsoft.com/en-us/aspnet/core/blazor/… -
我认为你的方法需要是static,如果它没有被包裹在DotNetObjectReference中
标签: c# blazor webassembly