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 相关文章推荐
jquery 简单的进度条实现代码
Mar 11 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
Oct 12 Javascript
Javascript实现动态菜单添加的实例代码
Jul 05 Javascript
jquery购物车实时结算特效实现思路
Sep 23 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
Dec 30 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
js如何打印object对象
Oct 16 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
Sep 17 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 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
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
js异或加解密效果代码
2008/06/25 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
vue打包相关细节整理(小结)
2018/09/28 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python 美化输出信息的实例
2018/10/15 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
药学专业大专生的自我评价
2013/12/12 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
小浪底导游词
2015/02/12 职场文书
欠条格式范本
2015/07/03 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers