最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#和Javascript操作同一json對(duì)象的實(shí)現(xiàn)代碼

 更新時(shí)間:2012年01月17日 00:19:58   作者:  
剛開始學(xué)Javascript,接觸到j(luò)son對(duì)象,json可以看作是用于客戶端數(shù)據(jù)實(shí)體對(duì)象的載體。json對(duì)象一般都是通過ajax方式傳送給服務(wù)層
能否讓客戶端和服務(wù)端操作同一json對(duì)象呢?目前想到的方式是通過客戶端隱藏控件來實(shí)現(xiàn)。
以下是一個(gè)泛型列表對(duì)象 List<TrainingImplement> ,轉(zhuǎn)為json后,客戶端和服務(wù)端如何操作
1、json對(duì)象與C#泛型相互轉(zhuǎn)換代碼
復(fù)制代碼 代碼如下:

//將json數(shù)據(jù)轉(zhuǎn)換為泛型
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;
}
//將泛型轉(zhuǎn)換為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數(shù)據(jù)源存入在客戶端隱藏控件中
復(fù)制代碼 代碼如下:

<input type="hidden" id="hideDataSource" runat="server" />

3、注意隱藏控件放json數(shù)據(jù)后,因?yàn)榘?/",會(huì)使request請(qǐng)示發(fā)生錯(cuò)誤,所以頁頭請(qǐng)?jiān)O(shè)置ValidateRequest="false"
復(fù)制代碼 代碼如下:

<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true"

4、頁面加載Page_Load時(shí),初始化json數(shù)據(jù)源
復(fù)制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
#region 加載數(shù)據(jù)源
if (!IsPostBack)
{
List<TrainingImplement> list= new List<TrainingImplement> (){
new TrainingImplement (){
Code="aaa",
c_name ="bbb"
}
....
}//初始化數(shù)據(jù)源
hideDataSource.Value = ConvertObjectToByteData(list);
}
else
{
//如果是回傳,數(shù)據(jù)源從客戶端讀取
List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value);
hideDataSource.Value = ConvertObjectToByteData(list);
}
#endregion

4、客戶端js操作json數(shù)據(jù)源示例
復(fù)制代碼 代碼如下:

<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 () {
//獲取數(shù)據(jù)源
dataSourceDom = document.getElementById(DataSourceHidName);
dataSourceJson = eval("(" + dataSourceDom.value + ")");
});
//修改第1個(gè)TrainingImplement對(duì)象的Code值示例方法
function ModifiedCode() {
dataSourceJson[0]._code = "Code001";
//將更新值后的json對(duì)象重新寫入隱藏控件中
dataSourceDom.value = $.toJSON(dataSourceJson);
}
</script>

5、服務(wù)端C#操作Json數(shù)據(jù)源
復(fù)制代碼 代碼如下:

List<TrainingImplement> list = ConvertByteDataToObject<List<TrainingImplement>>(hideDataSource.Value);

相關(guān)文章

最新評(píng)論

天镇县| 清徐县| 恩施市| 张家港市| 承德县| 鸡东县| 延津县| 湛江市| 得荣县| 沙坪坝区| 昔阳县| 收藏| 左贡县| 开平市| 舒城县| 涿鹿县| 潼南县| 拜泉县| 河曲县| 琼结县| 洛宁县| 武乡县| 临邑县| 绥滨县| 大理市| 犍为县| 肥东县| 上林县| 历史| 新安县| 扶绥县| 青河县| 洱源县| 尖扎县| 五大连池市| 吉首市| 原平市| 饶阳县| 临泽县| 靖西县| 枝江市|