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实现的文字按钮表单特效整理
Dec 07 Javascript
js获取form表单所有数据的简单方法
Aug 18 Javascript
深入理解jQuery3.0的domManip函数
Sep 01 Javascript
jQuery文字轮播特效
Feb 12 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
js实现图片懒加载效果
Jul 17 Javascript
vue 权限认证token的实现方法
Jul 17 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 Javascript
一起来了解一下JavaScript的预编译(小结)
Mar 01 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 Image Resize图片大小调整的函数代码
2011/01/17 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python代码实现KNN算法
2017/12/20 Python
python ---lambda匿名函数介绍
2019/03/13 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
在python中求分布函数相关的包实例
2020/04/15 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
汽车维修工岗位职责
2014/02/12 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
图书借阅制度范本
2015/08/06 职场文书
分析Python list操作为什么会错误
2021/11/17 Python
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python