当前位置: 首页 > 编程语言 > C#

为什么我必须匹配参数名称才能从MVC4Web应用程序中的ajax调用获取json数据?

时间:2023-04-11 03:36:40 C#

为什么我必须匹配参数名称才能从MVC4web应用程序中的ajax调用获取json数据?我只是想知道为什么.NET需要将参数名称与JSON对象的键名称相匹配?快速代码预览在这里...,"SITE":"1","DEPT":"2","LANG":"ko","MENUID":"0000","STEPMENU":"","ACTIONNAME":""}好的,让我们通过Ajax在控制器中调用一个动作。$.ajax({type:"POST",url:"DATACRUD.json",data:JSON.stringify(json),contentType:"application/json;charset=utf-8",dataType:"json",async:false,//_async,成功:function(result){}});我的C#动作代码在这里..[HttpPost]publicActionResultDATACRUD(stringjsondata){returnJson(new{fromMVC=jsondata});}//这里只是example.jsondata为空,因为我没有匹配的键名。为了让DATACRUD获取JSON数据,我必须这样做。{jsondata:{"service":"COMMON","method":"MENU_SUBLIST","UID":"1000007","ULID":"stackoverflow","UNM":"queston","SITE":"1","DEPT":"2","LANG":"ko","MENUID":"0000","STEPMENU":"","ACTIONNAME":""}}问题1为什么我必须把键名与参数名匹配?难道这只是有原因的,我想知道为什么。我想做的是...{"service":"COMMON","method":"MENU_SUBLIST","UID":"1000007","ULID":"stackoverflow","UNM":"queston","SITE":"1","DEPT":"2","LANG":"ko","MENUID":"0000","STEPMENU":"","ACTIONNAME":""}传递这个JSONdata鉴于我在上面指定的DATACRUD操作,我希望DATACRUD操作获取JSON数据并使用它,而不管键名是什么。还有另一个答案。答案是为JSON数据创建一个模型,并将其作为模型类型接收,模型作为字符串。但是无法在我的应用程序中定义模型。它可能会导致创建一百个模型。所以在制作模型后接收JSON数据是我最不需要的。遇到这种情况,我该怎么办?不允许键名匹配。不允许生成模型。不允许使用第三方框架。我认为可能的答案缩小到几个……我该怎么办?基于Post的MVC控制器:从HTTP主体获取JSON对象?您的操作应该是:[HttpPost]publicActionResultDATACRUD(){Streamreq=Request.InputStream;req.Seek(0,System.IO.SeekOrigin.Begin);字符串json=newStreamReader(req).ReadToEnd();返回Json(新{fromMVC=json});MVC路由引擎规定参数名称必须匹配,因为它知道要填充什么,因为所有内容都作为字符串传递给服务器。MVC管道将搜索URL的查询部分,甚至搜索POST表单中的字段以填充所有参数。拥有一百个模型对于一个复杂的项目来说并不是那么糟糕。但是,如果您必须返回并改造整个应用程序,那将是一件痛苦的事情。无论您做什么,您都需要确保您的JavaScript变量名称与您的Action方法参数相匹配,这应该不是问题,因为您正在编写双方。以上是C#学习教程:MVC4web应用中ajax调用为什么要匹配参数名才能获取json数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: