When转换为ASP.ValueProvider的NET值

本文关键字:NET ValueProvider ASP 转换 When | 更新日期: 2023-09-27 18:16:59

我的项目使用ASP。净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序列化的另一种选择,但不幸的是,目前还没有)

When转换为ASP.ValueProvider的NET值

如果您使用Ajax post向服务器发送JSON数据,那么content-type头应该反映这一事实(content-type ="application/JSON;Charset =utf=8"),以便服务器正确地解释数据。

- type = "应用程序/x-www-form-urlencoded;charset=utf=8",用于通过HTML表单提交数据。如果您提交带有此内容类型标头的JSON数据,浏览器将对其进行url编码并生成您所演示的字符串:

_model.DATE=%5C%2FDate(1409097600000)%5C%2F&_model.NAME=thomas

Date()函数在HTTP表单post中没有意义(它是一个JSON函数),这就是日期转换失败的原因。