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

推荐订阅源

博客园_首页
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
V
Visual Studio Blog
雷峰网
雷峰网
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Y
Y Combinator Blog

博客园 - 如是如是

将博客搬至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));

}

}

}