Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

215
Views
Llamar a un método no estático usando interoperabilidad blazor desde js

¡Trabajando en una aplicación blazor, tiene un método que debe llamarse desde JS! Cuando intento llamar al método sin la palabra clave estática, aparece este error:

 The assembly 'AssemblyName' does not contain a public invokable method with [JSInvokableAttribute("INIT_COMPLIANCE")].

Tan pronto como agrego estática, lo reconoce y lo carga bien.

Aquí está mi código en el componente 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); }

No quiero usar la palabra clave estática ya que GetData es un método no estático y no puedo llamarlo desde el método estático.

¿Dónde me equivoco aquí?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

puedes hacer esto:

 protected override async Task OnInitializedAsync() { await JSRuntime.InvokeVoidAsync("yourJsFunctionName", DotNetObjectReference.Create(this), nameof(MethodToInvokeFromJs)); } [JSInvokable] public void MethodToInvokeFromJs() { //your code StateHasChanged(); }

y su código js se verá así:

 function yourJsFunctionName(instance, callback) { instance.invokeMethodAsync(callback); }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!