我正在使用JQUERY ajax来调用MVC方法:
JQUERY:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Home/GetApplication/" + id,
dataType: "json",
data: '',
timeout: 10000,
success: function (obj) {
$('#Name').val(obj.Name);
$('#ApplicationIdentifier').val(obj.ApplicationIdentifier);
$('#Frequency').val(obj.FrequencyValue);
var d = new Date(parseInt(obj.BaseDate.substr(6)));
$('#BaseDate').val(d.getMonth() + '/' + d.getDay() + '/' + d.getFullYear());
},
error: function () {
return;
}
});
MVC方法:
[HttpPost]
public ActionResult GetApplication(int id)
{
return Json(new Application
{
Name = "Testing",
ApplicationIdentifier = "123ABC",
FrequencyValue = 1,
FrequencyType = 1,
BaseDate = DateTime.Now
});
}
所有这一切都很好,除了我的表格上显示的日期是2011年4月5日,它应该是5/13/2011。我在这里错过了什么吗?感谢。
答案 0 :(得分:1)
getMonth()
返回0到11之间的值,因此只需向其添加1(source)。
答案 1 :(得分:1)
使用JavaScript和.NET之间的日期和时间可能很困难,我们通常在Unix应用程序中通过始终进行交互来处理这个问题:
[HttpPost]
public ActionResult GetApplication(int id)
{
DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Json(new Application
{
Name = "Testing",
ApplicationIdentifier = "123ABC",
FrequencyValue = 1,
FrequencyType = 1,
BaseDate = (DateTime.Now - unixTime).TotalMilliseconds
});
}
既然您的JavaScript应用程序具有Unix时间,它可以很容易地转换为日期(您还错误地格式化日期字符串):
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Home/GetApplication/" + id,
dataType: "json",
data: '',
timeout: 10000,
success: function (obj) {
var d = new Date(obj.BaseDate);
var dateString = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
$('#Name').val(obj.Name);
$('#ApplicationIdentifier').val(obj.ApplicationIdentifier);
$('#Frequency').val(obj.FrequencyValue);
$('#BaseDate').val(dateString);
},
error: function () {
return;
}
});
另外,我不会将你的EF实体返回到前端,只给它真正需要的东西。通过使用dynamic
对象,可以在此处推断出您的类型,并且BaseDate将成为您提供的任何类型:
[HttpPost]
public ActionResult GetApplication(int id)
{
DateTime unixTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Json(new {
Name = "Testing",
ApplicationIdentifier = "123ABC",
FrequencyValue = 1,
BaseDate = (DateTime.Now - unixTime).TotalMilliseconds
});
}
答案 2 :(得分:1)
getMonth()返回0-11; getDay()获取星期几!
答案 3 :(得分:0)
我将\/Date(1234567889)\/
转换为javascript可以使用的日期的方式是:obj.BaseDate.slice(6, obj.BaseDate.length - 2);
Microsoft的日期序列化会导致字符串,因此您必须删除除数字以外的所有内容。
整行将成为var d = new Date(parseInt(obj.BaseDate.slice(6, obj.BaseDate.length - 2)));