Blazor invokeMethodAsync 找不到方法
Blazor invokeMethodAsync cannot find method
我正在使用 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 的方法,我也希望可以使用相同的调用访问它,但我已经尝试完全删除它,但没有解决问题。
您必须将 C# 方法更改为静态方法:
已更新 答案:您必须将 class 实例的引用传递给您的 javascript 方法,该方法将使用它来调用您的方法。
public async Task TriggerDotNetInstanceMethod()
{
objRef = DotNetObjectReference.Create(this); <--- this is the instance reference you have to pass
result = await JS.InvokeAsync<string>("sayHello1", objRef);
}
[JSInvokable]
public void GetCodeFromList(long jsCode)
{
code = codes.Where(p => p.SecretCode.Equals(jsCode)).FirstOrDefault();
StateHasChanged();
}
和javascript:
<script>
window.sayHello2 = (dotNetHelper, name) => {
return dotNetHelper.invokeMethodAsync('GetCodeFromList', name);
};
</script>
我正在使用 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 的方法,我也希望可以使用相同的调用访问它,但我已经尝试完全删除它,但没有解决问题。
您必须将 C# 方法更改为静态方法:
已更新 答案:您必须将 class 实例的引用传递给您的 javascript 方法,该方法将使用它来调用您的方法。
public async Task TriggerDotNetInstanceMethod()
{
objRef = DotNetObjectReference.Create(this); <--- this is the instance reference you have to pass
result = await JS.InvokeAsync<string>("sayHello1", objRef);
}
[JSInvokable]
public void GetCodeFromList(long jsCode)
{
code = codes.Where(p => p.SecretCode.Equals(jsCode)).FirstOrDefault();
StateHasChanged();
}
和javascript:
<script>
window.sayHello2 = (dotNetHelper, name) => {
return dotNetHelper.invokeMethodAsync('GetCodeFromList', name);
};
</script>