使用 Knockout 在 Asp.Net 中绑定日期
Date Binding in Asp.Net using Knockout
我在从数据库中获取数据时在 beatpicker 中绑定日期时间时遇到问题。在选择器中它呈现为: "/Date(1465323300000)/" ,KOJS 为:
DematRenounced.js
if (obj.ResponseData != null) {
if (obj.ResponseData.length > 0) {
var DematRenouncedEntry = obj.ResponseData[0];
self.entrydate(DematRenouncedEntry.entrydate);
}
并查看为:
DematRenouncedEntry.aspx
<input type="text" id="txtEntryDate" data-beatpicker="true" class="form-control"
data-bind="value:entrydate" maxlength="10" onblur="return valFutureDate(this,'Y',true);"
onpaste="return false" onkeypress="return isNumberKey(event)"
placeholder="YYYY.MM.DD" />
从服务器返回的数据显然是使用 Microsoft JsonSerializer 序列化的,它在序列化 DateTime 属性时使用非标准格式。有关详细信息,请参阅此答案:.
在对客户端上的日期执行任何操作之前,您需要做的是将其解析为日期。在您的情况下,您可以按如下方式修改 DematRenounced.js:
self.entrydate(new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/",""), 10)));
根据 Maciej Grzyb 的回答,我终于得到了解决方案。
var t = new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/", ""), 10));
var m = t.getMonth();
var d = t.getDate();
function addZ(m) { return m < 10 ? '0' + m : '' + m; };
function addZy(d) { return d < 10 ? '0' + d : '' + d; };
var y = t.getFullYear();
var format = y + "." + addZ(m) + "." + addZy(d);
self.entrydate(format);
我会检查这个:
更改 Json 转换器以将日期格式化为 ISO 格式:2016-06-16T18:52:36+00:00
我在从数据库中获取数据时在 beatpicker 中绑定日期时间时遇到问题。在选择器中它呈现为: "/Date(1465323300000)/" ,KOJS 为:
DematRenounced.js
if (obj.ResponseData != null) {
if (obj.ResponseData.length > 0) {
var DematRenouncedEntry = obj.ResponseData[0];
self.entrydate(DematRenouncedEntry.entrydate);
}
并查看为:
DematRenouncedEntry.aspx
<input type="text" id="txtEntryDate" data-beatpicker="true" class="form-control"
data-bind="value:entrydate" maxlength="10" onblur="return valFutureDate(this,'Y',true);"
onpaste="return false" onkeypress="return isNumberKey(event)"
placeholder="YYYY.MM.DD" />
从服务器返回的数据显然是使用 Microsoft JsonSerializer 序列化的,它在序列化 DateTime 属性时使用非标准格式。有关详细信息,请参阅此答案:.
在对客户端上的日期执行任何操作之前,您需要做的是将其解析为日期。在您的情况下,您可以按如下方式修改 DematRenounced.js:
self.entrydate(new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/",""), 10)));
根据 Maciej Grzyb 的回答,我终于得到了解决方案。
var t = new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/", ""), 10));
var m = t.getMonth();
var d = t.getDate();
function addZ(m) { return m < 10 ? '0' + m : '' + m; };
function addZy(d) { return d < 10 ? '0' + d : '' + d; };
var y = t.getFullYear();
var format = y + "." + addZ(m) + "." + addZy(d);
self.entrydate(format);
我会检查这个:
更改 Json 转换器以将日期格式化为 ISO 格式:2016-06-16T18:52:36+00:00