2009-08-14 12 views
3

Silverlight 컨트롤과 동일한 응용 프로그램에서 호스팅되는 ashx를 호출하는 Silverlight 응용 프로그램이 있습니다. Silverlight가 ashx JSON 응답에 액세스

// Basic object 
class SomeObject 
{ 
    int ID { get; set; } 
    string Description { get; set; } 
    double Value { get; set; } 
} 


// ASHX details 
DataLayer dl = GetDataLayer(); 
List<SomeObject> lst = dl.ListObjects(); 
string result = ""; 
if (lst != null) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    result = serializer.Serialize(lst); 
} 
context.Response.ContentType = "application/json"; 
context.Response.Write(result); 
context.Response.End(); 

가 지금은에 문제가하고있는 부분은 내 실버 라이트 컨트롤의 ASHX와 함께 할 것입니다 :

ASHX는 다음 (벗었을)한다.

ashx를 호출하고 JSON 결과를 내부 Silverlight 개체에 매핑하려고합니다. 꽤 간단한 작업처럼 보이지만 ashx에 액세스하거나 응답을 처리하는 방법을 모르겠습니다. 실버 라이트는 닷넷의 버젼을 없애 버렸기 때문에 저를 버렸습니다.

도움이나 제안이 있으십니까?

ASP.NET 3.5를 사용 중입니다.

답변

0

감사합니다. 귀하의 링크는 그것을 파악하는 데 도움이되었고 나는 미래에이 질문을 가로 질러 오는 다른 사람들을 위해이 질문에 사용한 코드를 포함시켜야한다고 생각했습니다.

Json을 처리하는 두 가지 방법. 두 가지 방법 모두 Json 데이터를 얻기 위해 핸들러를 설정해야합니다.

// This gets the URL to call to get the Json data 
Uri uri = GetSomeUrl(); 
WebClient downloader = new WebClient(); 
downloader.OpenReadCompleted += new OpenReadCompletedEventHandler(downloader_OpenReadCompleted); 
downloader.OpenReadAsync(uri); 

당신은 다음 JSON을 처리 할 수있는 코드 위에 지정된 이벤트 핸들러 downloader_OpenReadCompleted를 구현해야합니다. 두 경우에 아래의 코드는 사용 문 래핑한다 : 실버 프레임 워크의 일부인 JSON 데이터를 처리

using (System.IO.Stream strResult = e.Result) 
{ 
} 

첫번째 방법이다 System.Json 참조를 추가하기.

JsonArray jsonArray = (JsonArray)JsonArray.Load(e.Result); 
List<SomeObject> lst = new List<SomeObject>(); 
foreach (System.Json.JsonObject obj in jsonArray) 
{ 
    SomeObject obj = new SomeObject(); 
    obj.ID = int.Parse(obj["ID"].ToString(); 
    obj.Description = obj["Description"].ToString(); 
    obj.Value = double.Parse(obj["Value"].ToString()); 
    lst.Add(obj); 
} 

또는 실버없이 가능한 다른 방법은 다음과 같습니다

System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = 
    new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<SomeObject>)); 
List<SomeObject> lst = (List<SomeObject>)(serializer.ReadObject(strResult)); 

두 방법 모두 내게 맞는 볼 그때 사용할 수 있습니다 내 개체의 목록을 그만 둘.

도움 주셔서 감사합니다. Jon!

관련 문제