簡體   English   中英

可以在 Blazor 的 DOM 事件中混合 Javascript 和 C# 代碼嗎?

[英]It's possible mix Javascript and C# code in a DOM event in Blazor?

我正在嘗試在 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#");
   }
}

第一個問題是我收到錯誤“無法將類型 void 隱式轉換為對象” ,所以如果我更改測試方法簽名只是為了返回 object

public object Test()
{
    JSRuntime.InvokeVoidAsync("console.log", "Showing log from C#");
    return null;
}

應用程序編譯,但一旦頁面加載,“Test()” function 會自動執行,如果我點擊按鈕,它只會執行 Javascript 代碼,而不是兩段代碼。

I know I should handle events in Blazor prefixing the event name with "@" symbol in order to call a C# method, and execute Javascript code there using the interop, but in that way, I can't use the default Javascript "event"我需要使用它,而不是 Blazor“事件”版本。

提前致謝!

你只能有 1 個 onclick 屬性,所以要么從 JS 調用 C## 方法,要么從 C# 調用 JS 代碼。 在這兩種情況下,您都需要互操作,不支持以您嘗試的方式組合它。

"Test()" function 自動執行

是的,在onclick="... @Test()"中,它在頁面呈現時執行,而不是在單擊按鈕時執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM