asp.net-mvc – 将JSON对象作为参数传递给MVC控制器
发布时间:2020-12-16 07:11:59 所属栏目:asp.Net 来源:网络整理
导读:我有以下任意 JSON对象(字段名称可能会更改). { firstname: "Ted",lastname: "Smith",age: 34,married : true } – public JsonResult GetData(??????????){...} 我知道我可以像JSON对象一样定义一个具有与参数相同的字段名称的类,但我希望我的控制器能够接
我有以下任意
JSON对象(字段名称可能会更改).
{ firstname: "Ted",lastname: "Smith",age: 34,married : true } – public JsonResult GetData(??????????){ . . . } 我知道我可以像JSON对象一样定义一个具有与参数相同的字段名称的类,但我希望我的控制器能够接受具有不同字段名称的任意JSON对象. 解决方法
如果您想将自定义JSON对象传递给MVC操作,那么您可以使用此解决方案,它就像一个魅力.
public string GetData() { // InputStream contains the JSON object you've sent String jsonString = new StreamReader(this.Request.InputStream).ReadToEnd(); // Deserialize it to a dictionary var dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<String,dynamic>>(jsonString); string result = ""; result += dic["firstname"] + dic["lastname"]; // You can even cast your object to their original type because of 'dynamic' keyword result += ",Age: " + (int)dic["age"]; if ((bool)dic["married"]) result += ",Married"; return result; } 此解决方案的真正好处是您不需要为每个参数组合定义新类,除此之外,您可以轻松地将对象转换为其原始类型. 更新 现在,你甚至可以合并你的GET和POST动作方法,因为你的post方法不再有任何参数,就像这样: public ActionResult GetData() { // GET method if (Request.HttpMethod.ToString().Equals("GET")) return View(); // POST method . . . var dic = GetDic(Request); . . String result = dic["fname"]; return Content(result); } 并且您可以使用这样的帮助方法来促进您的工作 public static Dictionary<string,dynamic> GetDic(HttpRequestBase request) { String jsonString = new StreamReader(request.InputStream).ReadToEnd(); return Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string,dynamic>>(jsonString); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – asp.net MVC:禁用一个TextBox
- asp.net webforms路由:可选参数
- asp.net-mvc – 权限设计
- ASP.NET成员资格框架有多安全?
- ASP.NET应用程序配置IIS后,会出现错误
- 如何利用ASP.net IIS 7.5中的浏览器缓存
- asp.net – 有一种简单的方法可以从.NET用户控件中删除“ct
- asp.net-mvc – 如何在Html.TextBox帮助器中设置一个css类?
- asp.net-web-api2 – WEB API 2,Selfhost,Access除了“loca
- asp.net-mvc-3 – mvc3中的默认页面在哪里?
推荐文章
站长推荐
- asp.net-mvc – 从MVC 3升级到4后,Razor帮助器方
- asp.net – 使用IIS和ASP .Net实现负载均衡
- asp.net – 未知的服务器标签’ajaxToolkit:Cal
- asp.net – Web.config Transforms在没有的情况下
- asp.net-mvc – 在操作之间传递参数
- asp.net-core – dnx和dnu没有在Ubuntu 15.10上运
- asp.net – PayPal REST API DotNet SDK 1.9.1 –
- asp.net-mvc – 带.Net MVC的JQuery UI自动完成:
- ASP.NET:如何从通用处理程序获取文件的虚拟路径
- asp.net-mvc – 如何从控制器获取所有动作名称
热点阅读