我的项目使用ASP.NET MVC。
我通过ajax将一些数据发送到一个看起来像
的控制器动作{ "data" : { "DATE" : "\/Date(1409097600000)\/", "NAME" : "thomas } }
我使用控制器的ValueProvider来处理数据:
var provider = ControllerContext.Controller.ValueProvider;
var value = provider.GetValue("data.DATE");
// value is now already "27.08.2014 00:00:00"
为什么?
这部分转换发生在哪里?
类似的问题: -
以上数据为内容类型"application/json; charset=utf=8"
数据为"application/x-www-form-urlencoded; charset=utf=8"
ASP.NET无法转换日期值。
_model.DATE=%5C%2FDate(1409097600000)%5C%2F&_model.NAME=thomas
我认为我对.NET日期格式中的\
和/
犯了错误:\/Date(1409097600000)\/
(我知道netwonsoft.json可能是javascript序列化的替代品,但遗憾的是目前还没有)
答案 0 :(得分:0)
如果您使用Ajax帖子将JSON数据发送到服务器,那么内容类型标题应反映该事实(Content-Type =“application / json; charset = utf = 8”),以便服务器解释数据正确。
Content-Type =“application / x-www-form-urlencoded; charset = utf = 8”,用于通过HTML表单提交数据。如果您使用此内容类型标头提交JSON数据,浏览器将对其进行url-encode并生成您说明的字符串:
_model.DATE=%5C%2FDate(1409097600000)%5C%2F&_model.NAME=thomas
Date()函数在HTTP表单帖子中没有任何意义(它是一个JSON函数),这就是日期转换失败的原因。