我的项目使用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-format中的
\
和/
出错了:\/Date(1409097600000)\/
(我知道netwonsoft.json可以替代javascript序列化,但不幸的是目前还不能)
最佳答案
如果要使用Ajax帖子将JSON数据发送到服务器,则content-type标头应反映该事实(Content-Type =“ application / json; charset = utf = 8”),以便服务器正确解释数据。
Content-Type =“ application / x-www-form-urlencoded; charset = utf = 8”,用于通过HTML表单提交数据。如果使用此内容类型标头提交JSON数据,浏览器将对其进行url编码并生成您说明的字符串:
_model.DATE=%5C%2FDate(1409097600000)%5C%2F&_model.NAME=thomas
Date()函数在HTTP表单帖子(它是JSON函数)中没有意义,这就是日期转换失败的原因。
关于c# - 何时转换ValueProvider的ASP.NET值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25182322/