2008-11-12 27 views

回答

3

JSON轉換到.NET類可以用System.Runtime.SerializationSystem.Runtime.Serialization.JSON來完成。我懷疑你對設置從客戶端到服務器的函數調用更感興趣。我認爲這值得嘗試this tutorial

在本教程中,您需要添加一個web服務'.asmx'文件。在asmx文件中,您將能夠創建可從客戶端腳本調用的函數。您的ASP.NET頁面也可以引用生成的客戶端腳本來調用.asmx函數。

如果你真的想要做的JSON序列不過,你也可以使用以下命令:

using System.Runtime.Serialization; 
using System.Runtime.Serialization.Json; 

public class JsonSerializer 
{ 
    // To make a type serializeable, mark it with DataContractAttribute 
    // To make a member of such types serializeable, mark them with DataMemberAttribute 
    // All types marked for serialization then need to be passed to JsonSerialize as 
    // parameter 'types' 

    static public string JsonSerialize(object objectToSerialize, params Type[] types) 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(
      types[0], types.Skip(1)); 

     MemoryStream ms = new MemoryStream(); 
     serializer.WriteObject(ms, objectToSerialize); 
     ms.Seek(0, SeekOrigin.Begin); 
     StreamReader sr = new StreamReader(ms); 
     return sr.ReadToEnd(); 
    } 
} 
0

我已經使用ASP.Net Ajax一段時間了,但是不用擔心JSON或XML通信。相反,我使用Web服務直接返回可以使用innerHTML設置的內容。

這很容易實現。只需創建一個Web服務(ASMX)文件,並將您的方法聲明爲WebMethods(設置WebMethod屬性)。

現在,您可以從Javascript代碼中調用Web服務,就像常規函數一樣。

函數的結果將返回給回調函數。這是結構

//Webmethod returns some HTML content 
Myservice.DoSomething(myParam, callBackFunction); 

//Content is set on the webpage 
function callBackFunction(result){ 
    document.getElementById('myElemID').innerHTML = result; 
} 
+0

爲什麼不只是使用更新面板,如果你將有傳遞HTML的開銷,而不是輕量級的json對象? json的想法是保持k的電線最小,因此具有快速的帶外響應 – redsquare 2008-11-12 07:46:27

相關問題