我有动态生成的表单,所以我需要处理传递给控制器的未知数量的输入。可能没有预定义的模型(我假设)来处理这个,所以我想发送一个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 ''
答案 0 :(得分:1)
几个更好的选择:
FormCollection
https://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.118).aspx作为控制器方法中的唯一参数,并迭代其中的键和值或Request.Params
https://msdn.microsoft.com/en-us/library/system.web.httprequest.params(v=vs.110).aspx并迭代该对象的键和值。 Ajax data:
有效负载就是您的$(this).serialize()