亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法獲取由 Javascript 設置的輸入值,然后通過 Blazor 按鈕單擊讀取

無法獲取由 Javascript 設置的輸入值,然后通過 Blazor 按鈕單擊讀取

滄海一幻覺 2024-01-18 16:46:19
在 .NET 5 blazor 應用程序中,我使用 JavaScript 庫來讀取條形碼。當我按下 blazor 頁面上的按鈕時,我調用 javascript 函數。Javascript 函數讀取條形碼并設置輸入字段的值。有一個綁定到字符串值的輸入字段:<input id="result" @bind="@Received"/>@code { private string Received { get; set; } }單擊按鈕調用 JavaScript 函數:public async Task Start(){    await JSRuntime.InvokeVoidAsync("startBarcodeReader");}Javascript 函數設置輸入字段的值:document.getElementById('result').value = "Barcode Value";一切都按我的預期進行,我在屏幕上看到條形碼值。我想Received在單擊另一個按鈕時使用。然而綁定值是空的。未設置。public async Task Add(){    // Received is null    await Task.CompletedTask;}如果我手動在輸入字段中輸入內容,則設置 Received 變量的值。除非焦點丟失,否則綁定似乎不會設置綁定變量。如何獲取我在輸入字段中看到的值?我嘗試使用 inout 字段的 oninout 事件,但沒有成功。
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

通常,您的 JS 代碼不應以任何方式干擾 Blazor 的渲染和邊界功能。因此,您不能在 JavaScript 中為輸入字段賦值并期望該值傳遞給邊界變量Received。這永遠不會發生。Blazor 如何知道輸入字段的值已更改!輸入字段是否附加了任何事件偵聽器來通知 Blazor 已輸入值?沒有任何。

解決方案:將值傳遞給 Blazor 方法,在該方法中您可以更新變量Received...之后組件將重新渲染,輸入字段將在其中顯示相同的值,但這一次是通過渲染和Blazor 的邊界功能。

注意:您可以DotNetObjectReference調用 JavaScript,將其傳遞給 C# 對象,該對象定義了從 JavaScript 調用時接收條形碼值的方法。


查看完整回答
反對 回復 2024-01-18
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號