我正在尝试使用jQuery DateTimePicker将我的日期从输入字段发布到我的ViewModel中的DateTime属性。我一直在解析1/01/0001 0:00:00。 我们来看看我的viewmodel:
public class GameViewModel
{
[Display(Name = "Home team")]
public virtual String Home { get; set; }
[Display(Name = "Away team")]
public virtual String Away { get; set; }
[Display(Name = "Kickoff time")]
[DataType(DataType.DateTime)]
public virtual DateTime GameTime { get; set; }
[Display(Name = "Standard sharing on?")]
public virtual Boolean IsStandardSharing { get; set; }
//Hidden
public virtual Guid PeriodId { get; set; }
}
这是我输入字段的剃刀:
@Html.EditorFor(m => m.GameTime)
最后是我的JavaScript
$('#GameTime').datetimepicker({
constrainInput: true,
firstDay: 1,
monthNames: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesMin: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
timeText: "Tijdstip",
hourText: "Uur",
minuteText: "Minuut",
currentText: "Nu",
closeText: "Klaar",
stepMinute: 5,
hour: 12
});
$('#btnAddGame').click(function () {
var testPeriodId = "245f83a2-52b5-4a21-815e-a0b40020d7ff";
var valDdlHome = $('#Home').val();
var valDdlAway = $('#Away').val();
var valTxtGameTime = Date($('#GameTime').val());
var valRdnIsStandardSharing = $('#IsStandardSharing').val();
var postUrl = "/period/saveperiodgame/";
$.post(
postUrl,
{ Home: valDdlHome, Away: valDdlAway, GameTime: valTxtGameTime, IsStandardSharing: valRdnIsStandardSharing, PeriodId: testPeriodId },
function (data) {
if (data.Status == 200) {
console.log("Game added. Id:" + data.Data);
if ($('#emptyText').length > 0) {
$('#emptyText').hide();
}
MijnProno.fn.BuildPeriodGameTableRow(valTxtGameTime, valDdlHome, valDdlAway, data.Data);
} else if (data.Status == 500) {
console.log("Failed to add game");
} else {
console.log("Fault with Javascript");
}
}, "json"
);
});
整个下午一直在阅读和尝试回答,但没有设法让它工作(我总是等到很长时间才能提出这样的问题,因为可能有重复)。
在阅读了一些高度评价的帖子后,我想我必须发布日期,如/ Date(1224043200000)/格式,让我的ViewModel了解它。 这是正确的吗?如果是这样,我如何才能将我的mm / dd / yyyy hh:ss格式转换为json?
答案 0 :(得分:6)
最后,我找到了解决这个问题的方法。 blog post by Scott Hanselman驱使我找到解决方案。 我想我必须尝试各种方法解析我的约会,除了这个
//JAVASCRIPT CODE
var valTxtGameTime = $('#GameTime').val();
new Date(valTxtGameTime).toJSON()
检查我的HTTP帖子,日期现在发布为...
2012-08-24T19:50:00.000Z
...并在我的ViewModel中正确收到。
答案 1 :(得分:0)
要扩展我的评论,请尝试以下方法:
$.post(
postUrl,
{ Home: valDdlHome, Away: valDdlAway, GameTime: new Date(Date.parse(valTxtGameTime)), IsStandardSharing: valRdnIsStandardSharing, PeriodId: testPeriodId },
function (data) {
if (data.Status == 200) {
console.log("Game added. Id:" + data.Data);
if ($('#emptyText').length > 0) {
$('#emptyText').hide();
}
MijnProno.fn.BuildPeriodGameTableRow(valTxtGameTime, valDdlHome, valDdlAway, data.Data);
} else if (data.Status == 500) {
console.log("Failed to add game");
} else {
console.log("Fault with Javascript");
}
}, "json"
);
答案 2 :(得分:0)
您可以通过datepicker本身以不同的格式解析日期。 e.g。
var valTxtGameTime = $.datepicker.parseDate('dd/mm/yy', $('#GameTime').val());
Here 是完整的参考资料。
希望这会对你有所帮助!!