我在c#中开发了一个MVC Web应用程序,我使用Typescript来前端。 我有一个控制器的方法,它接收带有数据模型的HttpPost请求,这个数据模型是通过typelite自动生成的typescript类。
在我的请求数据模型中有一个日期时间字段,当我向后端发送请求时,数据时间字段被序列化为这种格式的字符串:“Sun + Dec + 25 + 2016 + 11:29:33 + GMT + 0100 + (ORA + SOLARE +欧洲+西的)” 我喜欢这个文件被serilize成UTC日期时间字符串。
我发送请求的打字稿代码是:
$.ajax({
method: callingMethod,
url: urlToCall,
data: *dataValue,
beforeSend: function () {
self.BeforeAsyncAction();
},
})
.done(callbackDone)
.fail(callbackFail)
.always(self.CompleteAsyncAction);
}
dataValue是一个具有此接口的类:
export class FileServiceModel extends Gedoc.WebApplication.ServiceModels.BaseServiceModel {
Allegato: Gedoc.WebApplication.ServiceModels.FileStreamServiceModel;
Attributi: Gedoc.WebApplication.ServiceModels.AttributoServiceModel[];
Descrizione: string;
DimensioneByte: number;
*DtIn: Date;
*DtRegistrazione: Date;
*DtUp: Date;
Id: number;
Tags: string;
Titolo: string;
}
如何自动序列化此字段的最佳方法
谢谢你的问候
答案 0 :(得分:0)
javascript Date
对象有toUTCString方法,所以:
let d = new Date();
console.log(d); // Sun Dec 25 2016 13:36:02 GMT+0200 (IST)
console.log(d.toUTCString()); // Sun, 25 Dec 2016 11:36:02 GMT
在您的情况下,您可以执行以下操作:
function normalizeDate(data: FileServiceModel) {
let copy = Object.assign({}, data);
copy.DtIn = data.DtIn.toUTCString();
copy.DtRegistrazione = data.DtRegistrazione.toUTCString();
copy.DtUp = data.DtUp.toUTCString();
return copy;
}
$.ajax({
method: callingMethod,
url: urlToCall,
data: normalizeDate(dataValue),
beforeSend: function () {
self.BeforeAsyncAction();
},
})
.done(callbackDone)
.fail(callbackFail)
.always(self.CompleteAsyncAction);
}