【发布时间】:2020-12-06 20:39:22
【问题描述】:
我找到了this post,了解如何使用 Blazor 编写 cookie(事实证明,这涉及到 JavaScript)。使用帖子中的示例,我制作了自己的版本,具有 Write 和 Read 功能。所以它看起来像这样:
<script>
window.blazorExtensions = {
WriteCookie: function (name, value, days) {
var expires;
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
};
ReadCookie: function (cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
}
</script>
唯一的问题是......它不起作用:-(
如果我只有WriteCookie 方法,它就可以工作。如果我只有ReadCookie 方法,它就可以工作。但如果我有两者,它就不起作用了。
从外观上看,window 部分是一个模块,但我可能是错的。然而,这正是 VS Code 在工具提示中所说的:
谁能给我解释一下,为什么这不起作用?我尝试了谷歌,但由于我对术语感到困惑,所以很难找到有用的东西。我习惯了 C#,并认为 window.blazorExtension 是某种命名空间。
如果有任何帮助,以下是我调用函数的方式:
public async Task WriteCookeAsync() {
var test = await JSRuntime.InvokeAsync<object>("blazorExtensions.WriteCookie", "Color", colorCode, 7);
}
【问题讨论】:
-
您正在定义对象的成员。这些应该用逗号分隔,但您使用了分号。是这样吗?
标签: javascript c# cookies blazor