gpt4 book ai didi

c# - 何时转换 ValueProvider 的 ASP.NET 值?

转载 作者:行者123 更新时间:2023-11-30 18:28:21 25 4
gpt4 key购买 nike

我的项目使用 ASP.NET MVC。

我通过 ajax 将一些数据发送到看起来像这样的 Controller 操作

{ "data" : { "DATE" : "\/Date(1409097600000)\/", "NAME" : "thomas } }

我使用 Controller 的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 post 将 JSON 数据发送到服务器,那么内容类型 header 应该反射(reflect)这一事实 (Content-Type="application/json; charset=utf=8"),以便服务器解释数据正确。

Content-Type="application/x-www-form-urlencoded; charset=utf=8", 用于通过 HTML 表单提交数据。如果您提交带有此内容类型 header 的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com