我正在构建一个组件,在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格式的日期字符串。