MVC中view与controller传json数据
来源:互联网 发布:ubuntu安装exe 编辑:程序博客网 时间:2024/06/06 19:56
在mvc框架中,不可避免地会遇到前台传值到后台,前台接收后台的值的情况(前台指view,后台指controller),既然要多次使用,就要好好总结,这样不仅自己能记住这些传值的方式和语法,也可能会帮到一些新手。下面开始。
准备工作
测试用的类的定义
/// <summary> /// 测试用的Person类,注意要用public,以及访问器get;set /// </summary> public class Person { public string name { get; set; } public string sex { get; set; } public string phone { get; set; } public Person(string n,string s, string p) { name = n; sex = s; phone = p; } }
请注意,这里的类的成员访问级别要设置为public,并且要设置访问器。当然不出现在传送中的成员就随便了。
引入命名空间
using Newtonsoft.Json;
以下分三种情况来介绍传值方式
一、页面载入时就接收json数据(不需用户触发)
controller的代码:
public ActionResult Index() { Person myPerson = new Person("李四", "女", "13888888"); ViewData["Person"] = JsonConvert.SerializeObject(myPerson); return View(); }
html的代码:
body部分
<h1>view不发送请求,view载入时直接接收json</h1> <input id="hdData" type="hidden" value="@ViewData["Person"]"/> <button id="send0">显示</button>
scrip部分
$("#send0").click(function(){ var jsonString = $("#hdData").val(); var json = eval('(' + jsonString + ')'); //设置断点,查看json变量的值 alert(json.name); })
首先在controller中,用JsonConvert.SerializeObject(string)方法,将类的实体转化为json字符串,再把他装到ViewData[“Person”]中,view中通过input标签的value=”@ViewData[“Person”]”来取得。接着访问input标签,用jq选择器取到input标签的value,最后调用evel方法,把字符串转化为object。
二、view传json数据到controller
html代码
$("#send").click(function () { var person = { name: "张三", sex: "男", phone: "135666" } $.ajax({ url: "/Home/ReciveJsonData", type: "post", data: { jdata: JSON.stringify(person) }, success: function () { alert("发送成功!") }, error: function () { alert("发送失败!") } }) })
这里要注意,确保你的url是正确的,格式为/controller名字(但不需要controller单词)/方法名;type设置为post,data:jdata要与controller方法的参数名一致,必须调用JSON.stringify方法把object转化为json字符串。
controller的代码
public void ReciveJsonData(string jdata) { Person myPerson = JsonConvert.DeserializeObject<Person>(jdata); }
使用JsonConvert.DeserializeObject<类名>(字符串)来把传过来的字符串解析为对应的类
运行结果
三、view发送请求到服务器,再接收json数据
html代码
$("#send1").click(function () { $.ajax({ url: "Home/SendJsonData", type: "get", dataType: "json", success: function (data) { alert(data.name); //设置断点,查看data的值 }, error: function (e) { alert("错误!"); } }) })
收到的data,不需要解析,直接就是object类。
如图所示
controller代码
public string SendJsonData() { Person myPerson = new Person("李四", "女", "13888888"); string jResult = JsonConvert.SerializeObject(myPerson); return jResult; }
注意,方法的返回类型为string,要把类转化为json字符串再传回view。
总结:总的来说,传送的数据只能是string类型(或许有其他方式,但是其他方式经常出错),无论是view传给controller还是反过来,传送之前要转化为json字符串,传送后要对结果进行解析,才能得到我们要的类。
完整代码之后会发上来。
- MVC中view与controller传json数据
- MVC中Controller与View之间的数据传递
- 浅析ASP.NET MVC中Controller与View数据传递
- 浅析ASP.NET MVC中Controller与View数据传递
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结 (来自网络)
- ASP.NET MVC中Controller与View之间的数据传递总结
- Asp.net mvc中controller与view间的如何传递数据
- 【ASP.NET MVC】View与Controller之间传递数据
- Spring mvc Controller层与前端JSON数据交互
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- Spring MVC Controller中返回json数据中文乱码处理
- ASP.NET MVC中-Controller与View传值
- Java网络爬虫crawler4j学习笔记<23> IdleConnectionMonitorThread类
- BigInteger权限判断示例
- 数学分析|有关n!的一个极限(多解)
- 屏蔽双击选中中文的方法
- 重构第八章读书笔记(下)
- MVC中view与controller传json数据
- ubuntu使用
- 一个监控网卡流量的shell脚本
- 11101
- BZOJ1150: [CTSC2007]数据备份Backup
- 11102
- POJ 2236 - Wireless Network(并查集)
- Visio 2013 由于形状保护、容器和/或图层属性的设置,无法完全执行此命令
- 09-链接标签