手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >c#和Javascript操作同一json对象的实现代码
c#和Javascript操作同一json对象的实现代码
摘要:能否让客户端和服务端操作同一json对象呢?目前想到的方式是通过客户端隐藏控件来实现。以下是一个泛型列表对象List,转为json后,客户端...

能否让客户端和服务端操作同一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);

【c#和Javascript操作同一json对象的实现代码】相关文章:

JavaScript 预解析的原理及实现

Javascript 字符串模板的简单实现

Javascript技术栈中的四种依赖注入小结

简单分析javascript面向对象与原型

JavaScript对传统文档对象模型的支持

Javascript类型转换的规则实例解析

深入理解JavaScript中的对象

Node.js中JavaScript操作MySQL的常用方法整理

学习Javascript面向对象编程之封装

详解Javascript中的Object对象

精品推荐
分类导航