zoukankan      html  css  js  c++  java
  • MVCRESTSilverLight 之 ViewModels\MainViewModel.cs

    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));

    }

    }

    }

     

     
     
    作者:易简.道    
     
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    线上项目部署
    day26 面向对象 单例模式总结
    阿里云服务器,更换操作系统步骤总结
    后端for循环补充
    前端,css
    django-admin 仿写stark组件action,filter筛选过滤,search查询
    7.20晚作业
    用户和群组管理
    7.19 晚作业
    目录和文件管理
  • 原文地址:https://www.cnblogs.com/xyicheng/p/2361927.html
Copyright © 2011-2022 走看看