Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将表单作为json传递给控制器并解析_Javascript_C#_Jquery_Json - Fatal编程技术网

Javascript 将表单作为json传递给控制器并解析

Javascript 将表单作为json传递给控制器并解析,javascript,c#,jquery,json,Javascript,C#,Jquery,Json,我已经动态生成了表单,所以我需要处理传递给控制器的未知数量的输入。没有预定义的模型(我假设)来处理这个问题,所以我认为发送json字符串可能是最好的 问题在于将控制器中的json解析为JObject 下面是我在提交ajax请求之前使用的内容 var json = JSON.stringify($(this).serialize()); 现在,传递给控制器的字符串如下所示 "\"__RequestVerificationToken=FGhUgZXRTWcDqC-ffeMb7S2paAgFSUN4

我已经动态生成了表单,所以我需要处理传递给控制器的未知数量的输入。没有预定义的模型(我假设)来处理这个问题,所以我认为发送json字符串可能是最好的

问题在于将控制器中的json解析为JObject

下面是我在提交ajax请求之前使用的内容

var json = JSON.stringify($(this).serialize());
现在,传递给控制器的字符串如下所示

"\"__RequestVerificationToken=FGhUgZXRTWcDqC-ffeMb7S2paAgFSUN4XyJl72qu85TD1GPpi69aGiyHzXBfHpb6XgBrGXAhtJz6NWka0XGK_JRSqpm-Q41tiYvJe1NO3J-_4leHroUvDp3VsWYMLFMm0&Form.ID=d7025ad7-745b-4898-ad40-350ef1d511ec&a5fbdde8-4c34-48e2-9a77-083c31eb1ae1=This+is+a+test\""
在控制器中

JObject jo = JObject.Parse(json); //error

foreach (var o in jo)
{
    string key = o.Key;
    JToken val = o.Value;
}
我犯的错误

"Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path ''

两个更好的选择:

  • 使用
    FormCollection
    作为控制器方法中的唯一参数,并迭代该或中的键和值
  • 使用
    Request.Params
    并迭代该对象的键和值

Ajax
数据:
负载就是您的
$(this).serialize()

为什么必须使用JSON?这似乎是不必要的复杂情况
x-www-form-urlencoded
是相当标准的,特别是对于非AJAXrequests@RoryMcCrossan你能举个例子吗?这是通过ajax提交的。控制器无法使用预定义模型,因为控制器不知道输入。正在发送的数据使用输入的ID作为键。您正在对字符串调用JSON.stringify(的结果)。因此,当解析JSON时,它将返回一个字符串,如错误所示。有关如何从表单数据生成对象的信息,请参阅。@MikeMcCaughan如果我去掉JSON.stringify,则在解析值时会遇到
意外字符:\。路径“”
控制器无法使用预定义的模型,因为控制器不知道输入。
为什么不直接循环通过
请求。那么参数
呢?非常感谢。这要容易得多。我和FormCollection一起去的。