【发布时间】:2018-09-17 04:39:39
【问题描述】:
我想支持 JWT,所以我需要保留令牌;有什么设施可以访问这个吗?还是我们现在应该注册我们自己的 javascript 函数来访问这个功能?
编辑:根据建议,我尝试将 JS 互操作用作:
<script>
localStorage.setItem("key1", "key1data");
Blazor.registerFunction("readStorage", (key) => {
return localStorage.getItem(key);
});
</script>
@if (jwtKey == null)
{
<div class="login-panel">
<p>JWT not loaded</p>
</div>
}
else
{
<div class="login-panel">
<p>@jwtKey</p>
</div>
}
@functions {
public RenderFragment Body { get; set; }
string jwtKey;
protected override async Task OnInitAsync()
{
jwtKey = RegisteredFunction.Invoke<string>("readStorage", "key1");
if (jwtKey == null)
{
jwtKey = "Unknown";
}
}
}
但这会导致诊断中出现 WASM 错误:
WASM: [Microsoft.AspNetCore.Blazor.Browser.Interop.JavaScriptException] 找不到名为“readStorage”的注册函数。黄蜂: 错误:找不到名为“readStorage”的注册函数。
仅供参考,这是在 Blazor VS 样板项目的 MainLayout.cshtml 中。
(如果合适,可以提出一个新问题;不过与这个问题有些相关)
【问题讨论】:
-
我已经用按钮作为触发器对此进行了测试,并且可以正常工作。我猜脚本是在异步调用之后执行的。所以你应该在这个过程的早期注册你的函数
标签: c# asp.net-core blazor