转换ValueProvider的ASP.NET值时?

时间:2014-08-07 12:16:45

标签: c# asp.net-mvc model-binding

我的项目使用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序列化的替代品,但遗憾的是目前还没有)

1 个答案:

答案 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函数),这就是日期转换失败的原因。