惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
D
Docker
B
Blog
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
S
SegmentFault 最新的问题
小众软件
小众软件
J
Java Code Geeks
美团技术团队
腾讯CDC
MyScale Blog
MyScale Blog
爱范儿
爱范儿
H
Help Net Security
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】

博客园 - 如是如是

将博客搬至CSDN 钱钟书夫人杨绛:《一百岁感言》 DOM无关事件 用到了反射,还不错。可以取到动态创建类的值 JounceTabRegion Jounce Blendable RestShart Post 方式传递poco给Web api Using ASP.NET Web API with ASP.NET Web Forms How to Migrate from WCF Web API to ASP.NET Web API ASP.NET Web API MVC-REST-SilverLight 之 架构 MVC-REST-SilverLight 之 RestExample.Model.Silverlight\Customer.cs - 如是如是 MVC-REST-SilverLight 之MainPage.xaml.cs MVC-REST-SilverLight 之Api\CustomerApi.cs - 如是如是 - 博客园 MVC-REST-SilverLight 之 Global.asax.cs MVC-REST-SilverLight 之 HttpConfiguration MVC-REST-SilverLight 之 MapServiceRoute MEF Export 和 Import 委托 设计模式-访问者
MVC-REST-SilverLight 之 ViewModels\MainViewModel.cs - 如...
如是如是 · 2012-02-21 · via 博客园 - 如是如是

using System.ComponentModel;

using RestExample.Model;

using System.Collections.ObjectModel;

using System;

using System.Net;

using System.Diagnostics;

using System.Xml;

using System.Xml.Linq;

using System.Linq;

using System.Collections.Generic;

using System.Threading;

using System.IO;

namespace RestClient.ViewModels

{

public class MainViewModel : INotifyPropertyChanged

{

private SynchronizationContext _context;

public MainViewModel()

{

_context = SynchronizationContext.Current;

}

private Customer _selectedCustomer;

public Customer SelectedCustomer

{

get { return _selectedCustomer; }

set

{

_selectedCustomer = value;

NotifyPropertyChanged("SelectedCustomer");

}

}

private ObservableCollection<Customer> _customers =

new ObservableCollection<Customer>();

public ObservableCollection<Customer> Customers

{

get { return _customers; }

}

public void AddNewLocalCustomer()

{

var customer = new Customer();

_customers.Add(customer);

SelectedCustomer = customer;

}

public void LoadCustomers()

{

string url = "http://localhost:9090/api/customers";

Uri uri = new Uri(url, UriKind.Absolute);

var request = (HttpWebRequest)WebRequest.Create(uri);

request.Method = "GET";

request.Accept = "text/xml";

request.BeginGetResponse((result) =>

{

var response = request.EndGetResponse(result);

var stream = response.GetResponseStream();

if (stream != null)

{

var reader = XmlReader.Create(stream);

XElement set = XElement.Load(reader);

_context.Post((o) =>

{

IEnumerable<Customer> customers =

from XElement item in set.Descendants("Customer")

select new Customer()

{

ID = int.Parse(item.Element("ID").Value),

FirstName = item.Element("FirstName").Value,

LastName = item.Element("LastName").Value,

Balance = decimal.Parse(item.Element("Balance").Value)

};

Customers.Clear();

foreach (Customer customer in customers)

{

Customers.Add(customer);

}

}, null);

}

}, null);

}

public void DeleteSelectedCustomer()

{

}

public void UpdateSelectedCustomer()

{

if (SelectedCustomer != null)

{

string url = "http://localhost:9090/api/customers";

Uri uri = new Uri(url, UriKind.Absolute);

var request = (HttpWebRequest)WebRequest.Create(uri);

request.Method = "POST";

request.ContentType = "text/xml";

request.BeginGetRequestStream((result) =>

{

var req = (HttpWebRequest)result.AsyncState;

var stream = req.EndGetRequestStream(result);

if (stream != null)

{

string customerTemplate =

"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +

"<Customer>" +

"<ID>{0}</ID>" +

"<LastName>{1}</LastName>" +

"<FirstName>{2}</FirstName>" +

"<Balance>{3}</Balance>" +

"</Customer>";

string xml = string.Format(customerTemplate,

SelectedCustomer.ID,

SelectedCustomer.LastName,

SelectedCustomer.FirstName,

SelectedCustomer.Balance);

Debug.WriteLine("POST: " + xml);

using (var writer = new StreamWriter(stream))

{

writer.Write(xml);

writer.Close();

}

req.BeginGetResponse((requestResult) =>

{

var req2 = (HttpWebRequest)requestResult.AsyncState;

var response = req2.EndGetResponse(requestResult);

var responseStream = response.GetResponseStream();

var reader = new StreamReader(responseStream);

string responseText = reader.ReadToEnd();

Debug.WriteLine("Response: " + responseText);

}, req);

}

}, request);

}

}

public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged(string propertyName)

{

if (PropertyChanged != null)

PropertyChanged(this,

new PropertyChangedEventArgs(propertyName));

}

}

}