无法调用 Blazor JavaScript 方法



我正在尝试使用 JSinterop 从我的 Blazor 组件调用 javascript 函数,但我总是收到此错误:

"未捕获的语法错误:输入意外结束"。

另外,当页面完全加载时,javascript函数会自动调用,这不是要求的行为,因为我想在单击按钮时触发该函数。

@page "/jsInterop"
@inject IJSRuntime jsRuntime
<h3>JSinterop</h3>
<button type="button" class="btn btn-primary" 
 onclick="@setLocalStorage()">
    Trigger JavaScript Prompt
</button>
@code{
public object setLocalStorage()
{
    return jsRuntime.InvokeAsync<object>("interop.setItem", "username", 
"Aymen");
}
}

window.interop = {
    setItem: function (name, value) {
        window.localStorage[name] = value;
        return value;
    },
};

您有一个语法错误,其中有 onclick 事件

onclick="@setLocalStorage()"

应该是

@onclick=“@setLocalStorage”

所有 Blazor 事件现在都需要以 @ 为前缀。

您还需要更改点击处理程序的签名,并且应该等待调用。

public async Task setLocalStorage()
{
    await jsRuntime.InvokeAsync<object>("interop.setItem", "username", 
"Aymen");
}

最新更新