我的项目使用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/

10-14 16:01
查看更多