c#和Javascript操作同一json对象的实现代码


Posted in Javascript onJanuary 17, 2012

能否让客户端和服务端操作同一json对象呢?目前想到的方式是通过客户端隐藏控件来实现。
以下是一个泛型列表对象 List<TrainingImplement> ,转为json后,客户端和服务端如何操作
1、json对象与C#泛型相互转换代码

//将json数据转换为泛型 
public static T ConvertByteDataToObject<T>(string byteData) 
{ 
T obj; 
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(byteData))) 
{ 
var serializer = new DataContractJsonSerializer(typeof(T)); 
obj = (T)serializer.ReadObject(ms); 
} 
return obj; 
} 
//将泛型转换为json 
public static string ConvertObjectToByteData<T>(T obj) 
{ 
string result; 
using (var ms = new MemoryStream()) 
{ 
var serializer = new DataContractJsonSerializer(typeof(T)); 
serializer.WriteObject(ms, obj); 
ms.Position = 0; 
result = Encoding.UTF8.GetString(ms.ToArray()); 
} 
return result; 
}

2、json数据源存入在客户端隐藏控件中
<input type="hidden" id="hideDataSource" runat="server" />

3、注意隐藏控件放json数据后,因为包含"/",会使request请示发生错误,所以页头请设置ValidateRequest="false"
<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true"

4、页面加载Page_Load时,初始化json数据源
protected void Page_Load(object sender, EventArgs e) 
{ 
#region 加载数据源 
if (!IsPostBack) 
{ 
List<TrainingImplement> list= new List<TrainingImplement> (){ 
new TrainingImplement (){ 
Code="aaa", 
c_name ="bbb" 
} 
.... 
}//初始化数据源 
hideDataSource.Value = ConvertObjectToByteData(list); 
} 
else 
{ 
//如果是回传,数据源从客户端读取 
List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value); 
hideDataSource.Value = ConvertObjectToByteData(list); 
} 
#endregion

4、客户端js操作json数据源示例
<script type="text/javascript" src="../Scripts/jquery-1.4.3.js"></script> 
<script type="text/javascript" src="../Scripts/jquery-ui-1.8.7.custom.min.js"></script> 
<script type="text/javascript" src="../Scripts/jquery.json-2.2.min.js"></script> 
<script type ="text/javascript" > 
var DataSourceHidName = "hideDataSource"; 
var dataSourceDom; 
var dataSourceJson; 
$(document).ready 
(function () { 
//获取数据源 
dataSourceDom = document.getElementById(DataSourceHidName); 
dataSourceJson = eval("(" + dataSourceDom.value + ")"); 
}); 
//修改第1个TrainingImplement对象的Code值示例方法 
function ModifiedCode() { 
dataSourceJson[0]._code = "Code001"; 
//将更新值后的json对象重新写入隐藏控件中 
dataSourceDom.value = $.toJSON(dataSourceJson); 
} 
</script>

5、服务端C#操作Json数据源
List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value);
Javascript 相关文章推荐
javascript 密码强弱度检测万能插件
Feb 25 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
Dec 28 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
Angularjs使用过滤器完成排序功能
Sep 20 Javascript
原生js实现each方法实例代码详解
May 27 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
Feb 24 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
Jan 16 #Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 #Javascript
javascript椭圆旋转相册实现代码
Jan 16 #Javascript
Prototype源码浅析 Number部分
Jan 16 #Javascript
Prototype源码浅析 String部分(四)之补充
Jan 16 #Javascript
Prototype源码浅析 String部分(二)
Jan 16 #Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 #Javascript
You might like
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
详解PHP中的Traits
2015/07/29 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
python七夕浪漫表白源码
2019/04/05 Python
python实现列表的排序方法分享
2019/07/01 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
师范毕业生自荐信
2013/10/17 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
《菜园里》教学反思
2014/04/17 职场文书
学校推普周活动总结
2015/05/07 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
springboot实现string转json json里面带数组
2022/06/16 Java/Android
python manim实现排序算法动画示例
2022/08/14 Python