当前位置: 首页 > news >正文

电子商务网站开发的书虚拟主机配置

电子商务网站开发的书,虚拟主机配置,传奇999发布网新开服,株洲房地产信息网说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种 你们懂的.. 正赶上自己十一人生大事..结婚..所以..忙的那叫一个脚不沾地啊. 今天的学习内容? 使用我们前面所学的技术,写一个增删改查. 效果如下… 说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种  你们懂的.. 正赶上自己十一人生大事..结婚..所以..忙的那叫一个脚不沾地啊. 今天的学习内容? 使用我们前面所学的技术,写一个增删改查. 效果如下:     正文 废话不多说,直接开始吧. 1.采用了的技术    列表ListView,采用继承重写的方式,实现简易的下拉刷新    采用HttpClient的方式访问后端的WebAPI.    使用了一系列的Xamarin提供的插件.    采用了MVVM的方式,来编写我们的业务代码. 2.WebAPI    前面我们说过,我们访问的是后端WebAPI,内容很简单..就是一个增删改查.    多余的我就不多说了,直接贴出代码如下: public class ValuesController : ApiController{         // GET api/values          [HttpGet]              public ListContextTable Get(int page,int count){              using (Models.School_TestEntities entites new Models.School_TestEntities()){                          var date entites.ContextTable.OrderBy(c c.ID).Skip((page - 1) * count).Take(count).ToList();                return date;}                            }            // PUT api/values/5public bool UpdateDate(Models.ContextTable datemodel){           // var date JsonConvert.DeserializeObjectModels.ContextTable(value);using (Models.School_TestEntities entites new Models.School_TestEntities()){                var model entites.ContextTable.Where(a a.ID datemodel.ID).FirstOrDefault();model.Title datemodel.Title;model.AddTime datemodel.AddTime;model.Context datemodel.Context;                if (entites.SaveChanges() 0){                    return true;}                return false;}}        public bool AddDate(Models.ContextTable model){            var date model;            using (Models.School_TestEntities entites new Models.School_TestEntities()){entites.ContextTable.Add(date);                if (entites.SaveChanges() 0){                    return true;}}            return false;}        // DELETE api/values/5public bool Delete(int id){            using (Models.School_TestEntities entites new Models.School_TestEntities()){                var date entites.ContextTable.Where(a a.ID id).FirstOrDefault();entites.ContextTable.Remove(date);                if (entites.SaveChanges() 0){                、    return true;}              return false;}}} 3.编写服务仓储 就是编写一个访问WebAPI用的仓储.代码如下: public class ContextDataStore{HttpClient client;         string RestUrl http://192.168.3.74:53470/api/values;        public ContextDataStore(){client new HttpClient();client.MaxResponseContentBufferSize 256000;}            public async Taskbool AddItemAsync(ContextModel item){            var uri new Uri(RestUrl /AddDate/);            var json JsonConvert.SerializeObject(item);var content new StringContent(json);content.Headers.ContentType new MediaTypeHeaderValue(application/json);            var response await client.PostAsync(uri, content);   if (response.IsSuccessStatusCode){                var date await response.Content.ReadAsStringAsync();                return Convert.ToBoolean(date);}             return false;}        public async Taskbool UpdateItemAsync(ContextModel item){                       var uri new Uri(RestUrl /UpdateDate/);            var json JsonConvert.SerializeObject(item);var content new StringContent(json);content.Headers.ContentType new MediaTypeHeaderValue(application/json);            var response await client.PostAsync(uri, content);                    if (response.IsSuccessStatusCode){                 var date await response.Content.ReadAsStringAsync();                return Convert.ToBoolean(date);}                   return false;}                    public async Taskbool DeleteItemAsync(int id){            var uri new Uri(string.Format(RestUrl /Delete/?id id, string.Empty));                    var response await client.DeleteAsync(uri);             if (response.IsSuccessStatusCode){                       var content await response.Content.ReadAsStringAsync();                return Convert.ToBoolean(content);}                      return false;}                    public async TaskIEnumerableContextModel GetItemsAsync(int page,int rows){            var uri new Uri(string.Format(RestUrl/Get/?pagepage count rows, string.Empty));            var response await client.GetAsync(uri);ListContextModel Items new ListContextModel();            if (response.IsSuccessStatusCode){                var content await response.Content.ReadAsStringAsync();                    try{Items JsonConvert.DeserializeObjectListContextModel(content);}                          catch (Exception ex){}}            return Items;}}   4.编写ViewModel来与界面进行绑定交互 详解请查看系列目录中的MVVM篇 代码如下(注释中有解释): public class ContextViewModel: INotifyPropertyChanged{        //初始化仓储public ContextDataStore DataStore new ContextDataStore();        //设置绑定对象public ObservableCollectionContextModel Items { get; set; }        //设置刷新命令public Command LoadItemsCommand { get; set; }        public event PropertyChangedEventHandler PropertyChanged;      private int page 1;            private int rows 10;              /// summary/// 初始化各种数据与监听               /// /summarypublic  ContextViewModel(){Items new ObservableCollectionContextModel();LoadItemsCommand new Command(async () await ExecuteLoadItemsCommand());             //监听添加的消息MessagingCenter.SubscribeContextModelPage, ContextModel(this, AddItem, async (obj, item) {                var _item item as ContextModel;                var date await DataStore.AddItemAsync(_item);                if (date){LoadDate();                     await obj.DisplayAlert(提示, 添加成功!, 关闭);       await obj.Navigation.PopAsync();}                          else{                 await obj.DisplayAlert(提示, 添加失败!, 关闭);}});            //监听更新的消息MessagingCenter.SubscribeContextModelPage, ContextModel(this, UpdateItem, async (obj, item) {                var date await DataStore.UpdateItemAsync(item);                if (date){LoadDate();                    await obj.DisplayAlert(提示, 修改成功!, 关闭);                    await obj.Navigation.PopAsync();}                else{                    await obj.DisplayAlert(提示, 修改失败!, 关闭);}});ExecuteLoadItemsCommand();}               /// summary/// 删除的方法              /// /summary/// param nameid/param/// returns/returnspublic async Taskbool DeleteItem(int id){            var date await DataStore.DeleteItemAsync(id);            if (date){                var item Items.Where(a a.ID id).FirstOrDefault();Items.Remove(item);OnPropertyChanged(Items);}            return date;}              /// summary/// 加载数据的命令              /// /summary/// returns/returnsasync Task ExecuteLoadItemsCommand(){          try{                //Items.Clear();var items await DataStore.GetItemsAsync(page,rows);                foreach (var item in items){Items.Add(item);}OnPropertyChanged(Items);page;}            catch (Exception ex){}}         /// summary/// 重新刷新数据      /// /summaryprivate async void LoadDate(){Items.Clear();page 1;            var items await DataStore.GetItemsAsync(page, rows);             foreach (var item in items){Items.Add(item);}OnPropertyChanged(Items);page;}        protected virtual void OnPropertyChanged(string propertyName){            if (PropertyChanged ! null){PropertyChanged(this,                    new PropertyChangedEventArgs(propertyName));}}} 嗯.还是说明一下 这个ViewModel就类似于MVC中的控制器,起到一个承上启下的作用.与页面交互并把这些交互信息传递给仓储,由仓储来访问WebAPI 5.编写界面,绑定数据 我们创建一个ContentPage页面如下: ?xml version1.0 encodingutf-8 ?ContentPage xmlnshttp://xamarin.com/schemas/2014/formsxmlns:xhttp://schemas.microsoft.com/winfx/2009/xamlxmlns:localclr-namespace:DemoApp.HTTPClientDemo.ViewModelsxmlns:Controlsclr-namespace:DemoApp.HTTPClientDemo; x:ClassDemoApp.HTTPClientDemo.ListViewPageContentPage.ToolbarItemsToolbarItem Text添加  OrderDefault ClickedToolbarItem_Clicked //ContentPage.ToolbarItemsContentPage.ContentStackLayoutControls:MyListView ItemsSource{Binding Items}VerticalOptionsFillAndExpandHasUnevenRowstrueLoadMoreCommand{Binding LoadItemsCommand}x:NamelistdateListView.ItemTemplateDataTemplate ViewCellViewCell.ContextActionsMenuItem  CommandParameter{Binding} ClickedMenuItem_Clicked Text修改 /MenuItem x:NameDeleteBtn  CommandParameter{Binding ID} ClickedMenuItem_Clicked_1 Text删除 IsDestructiveTrue //ViewCell.ContextActionsStackLayout Padding10Label Text{Binding Title}LineBreakModeNoWrapStyle{DynamicResource ListItemTextStyle}FontSize16/Label Text{Binding AddTime}LineBreakModeNoWrapStyle{DynamicResource ListItemDetailTextStyle}FontSize13//StackLayout/ViewCell/DataTemplate/ListView.ItemTemplate/Controls:MyListView/StackLayout/ContentPage.Content/ContentPage 这个ContentPage中,我们使用了StackLayout布局,ListView,ToolbarItem 等控件.绑定了我们前面编写的ContextViewModel(后台代码绑定的,在下面) 编写这个ContentPage的后台代码如下: public partial class ListViewPage : ContentPage{ContextViewModel viewModel;        public ListViewPage(){InitializeComponent();            this.BindingContext viewModel new ContextViewModel();}        private void MenuItem_Clicked(object sender, EventArgs e){            var mi ((MenuItem)sender);ContextModel date mi.CommandParameter as ContextModel;Navigation.PushAsync(new ContextModelPage());MessagingCenter.SendListViewPage,ContextModel(this, GetModel, date);}        private async void MenuItem_Clicked_1(object sender, EventArgs e){            var mi ((MenuItem)sender);            int id Convert.ToInt32( mi.CommandParameter);            var date await viewModel.DeleteItem(id);            if (!date){              await DisplayAlert(提示, 删除失败,请检查网络, 确定);}}        private void ToolbarItem_Clicked(object sender, EventArgs e){Navigation.PushAsync(new ContextModelPage());}} 这里,我们绑定了ContextViewModel,然后编写了界面上的各种交互事件. 以上,我们的列表也就算完成了,下面我们来看看我们的增加和修改页面.(也就是显示详细数据的页面) 如下: ContentPage xmlnshttp://xamarin.com/schemas/2014/formsxmlns:xhttp://schemas.microsoft.com/winfx/2009/xamlx:ClassDemoApp.HTTPClientDemo.ContextModelPageContentPage.ContentStackLayoutLabel Text标题: /Entry Placeholder请输入标题 x:Nametitel /Label Text时间: /DatePicker Formatyyyy-MM-dd x:Nametimes /Label Text内容: /Editor  HorizontalOptionsFillAndExpand HeightRequest200 x:Namecontexts /Button Text保存 x:NameBtnSave ClickedBtnSave_Clicked /Button/StackLayout/ContentPage.Content/ContentPage 这里我们采用了前面系列中讲过的Label ,Entry,DatePicker ,Editor ,编写后台代码如下: public partial class ContextModelPage : ContentPage{private int isUpdate 0;public ContextModelPage(){InitializeComponent();MessagingCenter.SubscribeListViewPage, ContextModel(this, GetModel, (obj, item) {//DisplayAlert(提示, 传过来的参数为 item, 确定);this.times.Date item.AddTime.Value;this.titel.Text item.Title;this.contexts.Text item.Context;isUpdate item.ID;});}private void BtnSave_Clicked(object sender, EventArgs e){if (isUpdate0){ContextModel model new ContextModel();model.AddTime times.Date;model.Context contexts.Text;model.Title titel.Text;model.ID isUpdate;MessagingCenter.Send(this, UpdateItem, model);}else{ContextModel model new ContextModel();model.AddTime times.Date;model.Context contexts.Text;model.Title titel.Text;MessagingCenter.Send(this, AddItem, model);}}protected override void OnDisappearing(){MessagingCenter.UnsubscribeListViewPage, ContextModel(this, GetModel);base.OnDisappearing();}} 这里,我们编写页面的点击等交互事件,然后我们采用通讯中心(MessagingCenter)的方式来传递修改和删除的信息给后台的ViewModel.  至此,就完成了整个的简易增删改查的编写.  写在最后 本系列到此,就已经进行了一大半了..后面会继续更新一些安卓库的绑定等内容,敬请期待. 相关文章  C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码 .NET StandardXamarin.Forms C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码 C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码 C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码 C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码 C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件),附源码 C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码 C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码 C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译) 原文地址http://www.cnblogs.com/GuZhenYin/p/7680425.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.pierceye.com/news/413626/

相关文章:

  • 网站推广关键词工具wap网站分享到微信
  • 哪个网站可以给图片做链接做网站的公司在哪
  • 搬瓦工可以长期做网站广告制作开票大类是什么
  • 高级网站开发工信部小企业门户网站建设
  • 网站建站知识秦皇岛汽车网站制作
  • 建站之星极速版app开发需求
  • .net域名可以做银行网站吗做网站用模版
  • 嘉兴市平湖市建设局网站品牌设计公司 知乎
  • jfinal网站开发模板app开发网站
  • 成都和奇乐网站建设公司怎么样研发网站要多久
  • 蓬莱做网站北京宣传片
  • 网站建设 部署与发布wordpress多说插件
  • 池州做网站的公司哪里有网站开发技术
  • 网站建设内容策划外贸软件排行榜前十名
  • 微信官方网站公众平台郸城建设银行网站
  • .net 微信网站开发免费网站建设制作
  • 做网站需要啥备案之类的嘛传统的网站开发模式
  • 杭州网站seo优化最适合女生的专业排名
  • 广州市酒店网站设计交易平台网站怎么做
  • 江苏省示范校建设专题网站网站网页制作公司网站
  • 前海艾爻网站 建设磐安住房和城乡建设部网站
  • 网站程序h5电商seo是什么意思啊
  • 网站赚钱做跨境电商要什么费用
  • wordpress修改文件简单的seo网站优化排名
  • 专业网专业网站建设展示网站建设的ppt
  • 江淮网站开发商城网站 html模板
  • 上海网站制作电话淄博免费网站建设
  • 做动态在网站需要学什么宁波网站建设用什么软件
  • 靖江 建设局网站wordpress小工具缓存
  • 搜索网站的软件郑州企业展厅设计公司