它';Blazor中的DOM事件中有没有可能混合使用Javascript和C#代码?

它';Blazor中的DOM事件中有没有可能混合使用Javascript和C#代码?,javascript,c#,html,blazor,webassembly,Javascript,C#,Html,Blazor,Webassembly,我试图在Blazor WebAssembly中实现下一个目标;我需要能够侦听组件中的事件,并使用Javscript和C#代码,如下所示: <button onclick="console.log('Showing event from Js: ' + event); @Test()">Test</button> @code { public void Test() { JSRuntime.InvokeVoidAsync(&q

我试图在Blazor WebAssembly中实现下一个目标;我需要能够侦听组件中的事件,并使用Javscript和C#代码,如下所示:

<button onclick="console.log('Showing event from Js: ' + event); @Test()">Test</button>

@code {
   public void Test()
   {
       JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#");
   }
}
应用程序会编译,但一旦加载页面,“Test()”函数就会自动执行,如果我单击按钮,它只会执行Javascript代码,而不是两段代码

我知道我应该在Blazor中处理以“@”符号作为事件名称前缀的事件,以便调用C#方法,并使用互操作在那里执行Javascript代码,但这样,我就不能使用我需要使用的默认Javascript“事件”,而不是Blazor“事件”版本


提前谢谢

您只能有1个onclick属性,因此可以从JS调用C##方法,也可以从C#调用JS代码。在这两种情况下,您都需要互操作,不支持以您尝试的方式组合互操作

“Test()”函数将自动执行


是的,在
onclick=“…@Test()”
中,它是在页面呈现时执行的,而不是在单击按钮时执行的。

是的,我尝试了interop(从.NET和Js两个方面),效果很好,但无论如何,我想实现我上面提到的目标,尝试获得更干净的代码,感谢您的回复并澄清了在render上调用自动C#方法的原因
public object Test()
{
    JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#");
    return null;
}