使用Angular JS使用复杂对象回发到服务器的日期时间和日期时间?值无法正确绑定。我试过JSON.stringify无济于事。我发布了一个相关的问题,虽然它可能过于笼统。我真正需要知道的是如何正确地传递这些日期。我目前正在做的是使用js中的变换来转换日期,但我宁愿不这样做,只需在Angular中获取我需要它们的表单中的日期然后传回正确的值。
如何绑定到那些日期时间/日期时间?价值正确吗?请参阅以下代码示例和Fiddler发布结果。
C#Class:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public DateTime? ApprovedForSomething { get; set; }
}
Angular JS Controller:
function PersonController($scope, $http) {
$scope.getPerson = function () {
$http.get('../../Home/GetPerson/1').success(function (data) {
$scope.Person = data;
});
}
$scope.updateApprovedForSomething = function () {
$http.post('../../Home/UpdatePerson', { person: $scope.Person }).success(function (data) {
console.log(data);
});
}
}
Fiddler Post:
HTTP / 1.1 200 OK Cache-Control:private Content-Type:application / json; charset = utf-8服务器:Microsoft-IIS / 8.0 X-AspNetMvc-版本:4.0 X-AspNet-Version:4.0.30319 X-SourceFiles: =?UTF-8 2 B 4 YzpcdXNlcnNcbmlja1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXFZhbGlkYXRpb25UZXN0XEhvbWVcR2V0UGVyc29uXDE =?= X-Powered-By:ASP.NET日期:2013年1月16日星期三14:48:34 GMT 内容长度:124
{ “姓”: “鲍勃”, “名字”: “史密斯”, “出生日期”: “/日期(695573315098)/”, “ApprovedForSomething”: “/日期(1358261315098)/”}
这是服务器端的结果。 datetime绑定到一个不正确的新日期时间值和日期时间?一片空白。
答案 0 :(得分:3)
如果有人有更好的解决方案,请随时更新答案。
可能有更好的解决方案,但我所做的是非常简单的解决方法。 只需为DateTime对象创建一个封装属性,然后将其用于绑定目的。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public DateTime? ApprovedForSomething { get; set; }
public DateTime BirthDateAsString
{
get { return BirthDate.ToShortDateString();}
set { DateTime.Parse(value, BirthDate);}
}
}
通过http,所有对象都被视为字符串,但ASP.NET非常智能,可以提供模型绑定功能。但是,它无法将JavaScript Date对象绑定到.NET DateTime
对象。
答案 1 :(得分:2)
更强大的方法是使用模型绑定器来处理所有传入日期。
var el = document.getElementById('element')
var rectObject = el.getBoundingClientRect();
var scroll = document.body.scrollTop
el.className = 'unpinned';
el.style.top = (scroll + rectObject.top) + "px"
添加全局ASAX。
.unpinned {
position: absolute;
}