Asp.net mvc 在url的查询字符串处拆分包含url的表单发布JSON数据

Asp.net mvc 在url的查询字符串处拆分包含url的表单发布JSON数据,asp.net-mvc,json,Asp.net Mvc,Json,我需要将JSON数据发布到包含URL的MVC控制器。JSON数据看起来像是在查询字符串(=)处被拆分 JSON数据如下所示: "{"Files":[{"Title":"test","OriginalFileName":"", "FileName":"http://company.domain.com/auth.aspx?enrollmentkey=APK54cd1546a8454d4ca79ded89a78f8698", "Categories":[{"CategoryId":76,"SubCa

我需要将JSON数据发布到包含URL的MVC控制器。JSON数据看起来像是在查询字符串(=)处被拆分

JSON数据如下所示:

"{"Files":[{"Title":"test","OriginalFileName":"",
"FileName":"http://company.domain.com/auth.aspx?enrollmentkey=APK54cd1546a8454d4ca79ded89a78f8698",
"Categories":[{"CategoryId":76,"SubCategoryId":182,"CatId":"CatId0"}],
"TypeId":"84",
"Tags":["Select Tag(s)..."],
"TagIds":[],
"Roles":[],
"MemberOnly":false,
"ContentTypeId":7,
"Id":0,
"IsPublished":true,
"PublishDate":""}]}"
调试时,我看到它被分为

键(Request.Form.GetKey(0)):

值(Request.Form.GetValue(0)):

JSON数据是否需要在=处转义,或者整个过程需要编码,或者我是否遗漏了什么

我应该注意,我正在使用knockout的ko.toJSON(js)创建JSON,尽管我不确定这是否相关

我还注意到chrome开发工具似乎也能识别关键的Val拆分:


如果要向服务器发送JSON数据,则需要将内容类型标题设置为
application/JSON
。如果设置为
application/x-www-form-urlencoded
,则服务器将尝试将JSON解释为URL中的键值对。这就是为什么你的JSON字符串在
=

处被一分为二的原因。你能在提交JSON之前对你的URL进行编码吗?当你发布JSON数据时,内容类型头的值是多少?@BrianRogers如果你发布JSON数据,内容类型是application/x-www-form-urlencodedIt需要是application/JSON。你能在哪里显示代码吗您正在发送请求吗?您是如何构造JSON数据的,以及将其作为AJAX请求发送的?
{"Files":[{"Title":"Test","OriginalFileName":"","FileName":"http://company.domain.com/auth.aspx?enrollmentkey
APK54cd1546a8454d4ca79ded89a78f8698","Categories":[{"CategoryId":110,"SubCategoryId":111,"CatId":"CatId0"}],"TypeId":"69","Tags":["Select Tag(s)..."],"TagIds":[],"Roles":[],"MemberOnly":false,"ContentTypeId":7,"Id":0,"IsPublished":true,"PublishDate":""}]}