Blazor javascript方法无法调用

时间:2019-06-16 15:33:30

标签: javascript c# blazor javascript-interop

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

  

“未捕获到的SyntaxError:输入意外结束”。

另外,当页面满载时将自动调用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;
    },

};

1 个答案:

答案 0 :(得分:2)

在发生onclick事件时出现语法错误

onclick="@setLocalStorage()"

应该是

@onclick=“@setLocalStorage”

所有Blazor事件现在都必须以@开头。

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

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