我动态生成了表单,因此我需要处理传递给 Controller 的未知数量的输入。可能没有预定义的模型(我假设)来处理这个问题,所以我认为发送 json 字符串可能是最好的。
问题在于将 Controller 中的 json 解析为 JObject。
这是我在使用 ajax 请求提交之前使用的内容。
var json = JSON.stringify($(this).serialize());
现在传递给 Controller 的字符串如下所示
"\"__RequestVerificationToken=FGhUgZXRTWcDqC-ffeMb7S2paAgFSUN4XyJl72qu85TD1GPpi69aGiyHzXBfHpb6XgBrGXAhtJz6NWka0XGK_JRSqpm-Q41tiYvJe1NO3J-_4leHroUvDp3VsWYMLFMm0&Form.ID=d7025ad7-745b-4898-ad40-350ef1d511ec&a5fbdde8-4c34-48e2-9a77-083c31eb1ae1=This+is+a+test\""
在 Controller 中
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
https://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.118).aspx作为 Controller 方法中的唯一参数,并迭代其中的键和值或 - 使用
Request.Params
https://msdn.microsoft.com/en-us/library/system.web.httprequest.params(v=vs.110).aspx并迭代该对象的键和值。
Ajax data:
有效负载就是您的 $(this).serialize()
关于javascript - 将表单作为 json 传递给 Controller 并解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385948/