C# Blazor invokeMethodAsync找不到方法

C# Blazor invokeMethodAsync找不到方法,c#,blazor,webassembly,C#,Blazor,Webassembly,我正在使用invokeMethodAsync从Javascript调用一个C#方法。我一天前让它工作,但从那以后它就坏了,再多的恢复我的更改似乎也无法修复它 错误:System.ArgumentException:程序集“HelloWorld”不包含具有[JSInvokableAttribute(“GetCodeFromList”)]的公共可调用方法。 JS: DotNet.invokeMethodAsync('HelloWorld', 'GetCodeFromList') .then(

我正在使用invokeMethodAsync从Javascript调用一个C#方法。我一天前让它工作,但从那以后它就坏了,再多的恢复我的更改似乎也无法修复它

错误:
System.ArgumentException:程序集“HelloWorld”不包含具有[JSInvokableAttribute(“GetCodeFromList”)]的公共可调用方法。

JS:

DotNet.invokeMethodAsync('HelloWorld', 'GetCodeFromList')
    .then(data => {
        data.push(result.codeResult.code);
    }
);
result.codesult.code
是我希望在C端接收的号码。我已经确认号码是正确的

C#:


我还有另一个.razor文件,其中有一个名为GetCodeFromList的方法,我也希望可以使用相同的调用访问该方法,但我尝试完全删除它,但这并没有解决问题。

您必须将C方法更改为静态:

[JSInvokable]
public static void GetCodeFromList(long jsCode)
{
    code = codes.Where(p => p.SecretCode.Equals(jsCode)).FirstOrDefault();
    StateHasChanged();
}

如果您不能使用静态函数,我建议您使用实例方法调用,检查并

您需要一个
DotNetObjectReference
来调用非静态函数:我认为您需要一个方法,如果它没有包装在在静态方法中?
[JSInvokable]
public static void GetCodeFromList(long jsCode)
{
    code = codes.Where(p => p.SecretCode.Equals(jsCode)).FirstOrDefault();
    StateHasChanged();
}