在 Blazor 应用程序上工作,它有一个需要从 JS 调用的方法!当我尝试在没有 static 关键字的情况下调用该方法时,出现此错误-
The assembly 'AssemblyName' does not contain a public invokable method with [JSInvokableAttribute("INIT_COMPLIANCE")].
一旦我添加静态,它就会识别并加载它。
这是我在 blazor 组件中的代码 -
protected override Task OnInitializedAsync()
{
jsToDotNetBridgeReference = DotNetObjectReference.Create(this);
js.InvokeVoidAsync("SetDotNetReference", jsToDotNetBridgeReference);
return base.OnInitializedAsync();
}
[JSInvokableAttribute("INIT_COMPLIANCE")]
public async void InitComplianceComponent(string token)
{
id_token = token;
Console.WriteLine(token);
await GetData();
}
JS-
self.addNewCompliance = function () {
const url = someurl;
var resource = window.authContext.getResourceForEndpoint(url);
window.authContext.acquireToken(resource, function (error, token) {
// Handle ADAL Error
if (error || !token) {
console.log('ADAL Error Occurred: ' + error);
return;
} else {
Blazor.start().then(() => {
window.InitComplianceComponent(window.DotNet, token);
})
//window.InitComplianceComponent(window.DotNet, token);
}
});
}
BlazorInterop.js
InitComplianceComponent = function (dotnetObj, token) {
dotnetObj.invokeMethod("AssemblyName", "INIT_COMPLIANCE", token);
}
我不想使用静态关键字作为GetData
非静态方法,我不能从静态方法调用它。
我在哪里错了。