Blazor,如何将日期传递给IJSRuntime.InvokeVoidSync



我正在构建一个组件,在OnAfterRenderAsync中,我试图调用一些javascript并传递一个对象,该对象包含一堆成员,其中一个是DateTime数据类型。

protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
var parameters = new
{
date = DateValue            
};
await JSRuntime.InvokeVoidAsync("window.myfunction", _inputReference, parameters);      
}
}

在我的javascript中,我测试了数据类型,我知道它是一个字符串。。。

window.myfunction = (options) {
var t = typeof options.date;
console.log(t);

var d = new Date(options.date);
console.log(d); 
}

有更好的约会方式吗?我需要将值作为日期对象处理,但这真的是转换为日期对象的最佳方式吗(使用new date(((?这种转换方法似乎很脆弱,因为这意味着Date对象解析采用的是服务器端使用的格式。我不知道这是否容易受到浏览器和服务器之间区域设置差异的影响。

这与调用HTTP端点的情况相同,该端点返回包含DateTime对象的响应。日期对象必须被序列化(通常为JSON(,然后从客户端反序列化。

使用JS互操作时也会发生同样的情况。为了从C#传递到JavaScript,必须将日期序列化为JSON。JSON是一种常见的数据传输格式,可以从C#和JavaScript中进行解析。日期被序列化为ISO 8601格式的日期字符串。

相关内容

  • 没有找到相关文章