一步一步学习Silverlight之数据与通信篇(8)

2019-01-26 20:13

public string Author { get; set; } } 再添加一个Blog类,它有一个返回类型为IQueryable的属性Posts: public class Blog { public Blog() { _post.Add(new Post { Id = 1, Title = \一步一步学Silverlight 2系列(13):数据与通信之WebRequest\, Author = \}); _post.Add(new Post { Id = 2, Title = \一步一步学Silverlight 2系列(12):数据与通信之WebClient\, Author = \}); _post.Add(new Post { Id = 3, Title = \一步一步学Silverlight 2系列(11):数据绑定\, Author = \}); _post.Add(new Post { Id = 4, Title = \一步一步学Silverlight 2系列(10):使用用户控件\, Author = \}); _post.Add(new Post { Id = 5, Title = \一步一步学Silverlight 2系列(9):使用控件模板\, Author = \}); _post.Add(new Post { Id = 6, Title = \一步一步学Silverlight 2系列(8):使用样式封装控件观感\, Author = \}); } List _post = new List(); public IQueryable Posts { get { return _post.AsQueryable(); } } } 添加一个ADO.NET Data Service,取名BlogDataService.svc:

实现服务,让它继承于泛型的WebDataService,并且设置访问权限。

public class BlogDataService : WebDataService { public static void InitializeService(IWebDataServiceConfiguration config) { config.SetResourceContainerAccessRule(\, ResourceContainerRights.AllRead); } } 现在我们的服务端就完成了,现在我们可以在浏览器中访问BlogDataService.svc,应该可以看到如下界面:

现在还看不到所有的Posts,我们可以在地址栏中输入http://localhost:8081/BlogDataService.svc/Posts,浏览器会默认为Feed打开,可以查看源代码,将会看到所有内容,XML内容如下(只列出片段): http://localhost:8081/BlogDataService.svc/Posts Posts http://localhost:8081/BlogDataService.svc/Posts(1) <name /> </author> <link rel=\edit\href=\Posts(1)\title=\Post\/> <content type=\application/xml\> 1</ads:Id> 一步一步学Silverlight 2系列(13):数据与通信之WebRequest</ads:Title> TerryLee</ads:Author> </content> </entry> 如果要查看某一条文章的内容,可以输入http://localhost:8081/BlogDataService.svc/Posts(2)进行查看,如下图所示。 </p><p>当然还可以进行其他的查询,使用filter和orderby等,如</p><p>http://localhost:8081/BlogDataService.svc/Posts?$filter=Id eq 1&$orderby=Id,这里不在介绍。至此我们的数据服务端就算完成了。下面再实现客户端,XAML不再贴出来,大家可以参考前面的几篇文章,使用WebClient获取数据,返回的结果是一个XML文件: private void UserControl_Loaded(object sender, RoutedEventArgs e) { Uri uri = new Uri(\); WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(uri); } void client_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e) { if (e.Error == null) { } } 我们可以使用LINQ to XML进行数据的读取,在Silverlight项目中建立一个Post类,跟上面的Post类一样,然后使用LINQ to XML读取: </p><p>XmlReader reader = XmlReader.Create(e.Result); XDocument postdoc = XDocument.Load(reader); XNamespace xmlns = \; XNamespace ads = \; var posts = from x in postdoc.Descendants(xmlns + \) select new Post { Id = int.Parse(x.Descendants(ads + \).First().Value), Title = x.Descendants(ads + \).First().Value, Author = x.Descendants(ads + \).First().Value }; Posts.ItemsSource = posts; 完成的代码如下所示: </p><p>private void UserControl_Loaded(object sender, RoutedEventArgs e) { Uri uri = new Uri(\); WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); client.OpenReadAsync(uri); } void client_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e) { if (e.Error == null) { </p> <br /> <p><script type="text/javascript">s("content-m");</script></p> </div> <div class="m-pages"><li><a>共8页: </a></li><li><a href='448855_7.html'>上一页</a></li><li><a href='448855.html'>1</a></li><li><a href='448855_2.html'>2</a></li><li><a href='448855_3.html'>3</a></li><li><a href='448855_4.html'>4</a></li><li><a href='448855_5.html'>5</a></li><li><a href='448855_6.html'>6</a></li><li><a href='448855_7.html'>7</a></li><li class="thisclass"><a href='#'>8</a></li><li><a href='#'>下一页</a></li></div> <div class="down-word"> <div class="word-ico"></div> <div class="word-tit"> <span class="docx">一步一步学习Silverlight之数据与通信篇(8).doc</span> <span>将本文的Word文档下载到电脑</span> <span>下载失败或者文档不完整,请联系客服人员解决! </span> </div> <div class="word-pic"><a href="javascript:;">下载这篇word文档</a></div> </div> </article> <div class="art-prenext"> <p>下一篇:<a href="/wenku/zonghe/448854.html">试论国际商务谈判中的语言交际技巧</a></p> </div> <script type="text/javascript">s("like-m");</script> <div class="main-tab"><a class="on" href="javascript:;">相关阅读</a></div> <div class="tab-box"> <ul class="main-new on clearfix"> <li><a href="/wenku/zonghe/1263351.html" title="石油大学《化工原理二》2021期末考试答案">石油大学《化工原理二》2021期末考试答案</a></li> <li><a href="/wenku/zonghe/1157609.html" title="建筑节能检测习题集(84页)">建筑节能检测习题集(84页)</a></li> <li><a href="/wenku/zonghe/215568.html" title="高考物理(考点解读命题热点突破)专题06 机械">高考物理(考点解读命题热点突破)专题06 机械</a></li> <li><a href="/wenku/zonghe/215769.html" title="1 2014.10.23第一次财务会计理论与实务课堂笔">1 2014.10.23第一次财务会计理论与实务课堂笔</a></li> <li><a href="/wenku/zonghe/215778.html" title="通信资源管理系统介绍(GIS)">通信资源管理系统介绍(GIS)</a></li> <li><a href="/wenku/zonghe/215564.html" title="年产60万吨PTA项目环境影响报告书">年产60万吨PTA项目环境影响报告书</a></li> <li><a href="/wenku/zonghe/215563.html" title="2016小学生读书笔记范文">2016小学生读书笔记范文</a></li> <li><a href="/wenku/zonghe/215562.html" title="Dhlrwk谈中学生英语学习策略">Dhlrwk谈中学生英语学习策略</a></li> <li><a href="/wenku/zonghe/215560.html" title="数电课程设计报告 洗衣机自动控制电路">数电课程设计报告 洗衣机自动控制电路</a></li> <li><a href="/wenku/zonghe/215558.html" title="2018年最新 湖南省长沙市长郡中学2018届上学">2018年最新 湖南省长沙市长郡中学2018届上学</a></li> </ul> </div> <div class="main-tab"><a class="on" href="javascript:;">本类排行</a></div> <div class="tab-box"> <ul class="main-new on clearfix"> <li><a href="/wenku/zonghe/175782.html" title="云客服基础考试">云客服基础考试</a></li> <li><a href="/wenku/zonghe/158762.html" title="《红星照耀中国--》名著阅读练习题及答案">《红星照耀中国--》名著阅读练习题及答案</a></li> <li><a href="/wenku/zonghe/176003.html" title="红星照耀中国练习题及答案">红星照耀中国练习题及答案</a></li> <li><a href="/wenku/zonghe/171844.html" title="《红星照耀中国》练习题">《红星照耀中国》练习题</a></li> <li><a href="/wenku/zonghe/159778.html" title="人教部编版2018-2019学年八年级语文上册第一">人教部编版2018-2019学年八年级语文上册第一</a></li> <li><a href="/wenku/zonghe/183326.html" title="化工导论试题">化工导论试题</a></li> <li><a href="/wenku/zonghe/182252.html" title="八年级上册名著导读练习——《红星照耀中国》">八年级上册名著导读练习——《红星照耀中国》</a></li> <li><a href="/wenku/zonghe/162180.html" title="人教版语文八(上)名著导读《红星照耀中国》练">人教版语文八(上)名著导读《红星照耀中国》练</a></li> <li><a href="/wenku/zonghe/185266.html" title="2018年江苏省第八届就业创业知识竞赛题库(全7">2018年江苏省第八届就业创业知识竞赛题库(全7</a></li> <li><a href="/wenku/zonghe/168880.html" title="《红星照耀中国》导读及练习题附答案">《红星照耀中国》导读及练习题附答案</a></li> </ul> </div> </div> <footer class="footer"> <p class="bt-links"><a href="https://m.77cn.com.cn">手机版</a><span class="v-line">|</span><a href="https://www.77cn.com.cn">PC版</a><span class="v-line">|</span><a href="https://m.77cn.com.cn/fww">范文大全</a></p> <p>Copyright © 2019-2022 免费范文网 版权所有<br/> 声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。<br/>客服QQ: 邮箱:tiandhx2@hotmail.com<br/> <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">苏ICP备16052595号-18</a> </p> <div style="display:none;"> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6e245478384fea490ec3a2317ee103ab"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </div> </footer> <div class="theme-popover"> <div class="theme-poptit"> <a href="javascript:;" title="关闭" class="close">×</a> <b>注册会员免费下载</b>(下载后可以自由复制和排版) </div> <div class="theme-popbod dform"> <!--<p class="downtit">下载本文档需要支付 <i>7</i> 元</p>--> <!--<p class="chose"><span>支付方式:</span><span class="pay1"><img src="https://www.77cn.com.cn/img/wxpay.jpg" class="over"></span> <span class="pay2"><img src="https://www.77cn.com.cn/img/alipay.jpg"></span></p>--> <!--<div class="youke_pay">--> <!--<div class="wxpay"><a href="javascript:;">微信支付并下载</a></div>--> <!--<div class="alipay" style="display:none;"><a href="javascript:;">支付宝支付并下载</a>--> <!--</div>--> <!--</div>--> <p class='wxpay'><a href='https://www.77cn.com.cn/user/index.php'>马上注册会员</a></p> <p class="downtxt">注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。<br>微信: QQ:</p> </div> </div> <div class="theme-popover-mask"></div> <script> //menu $(".header .menu").on("click", function(){ $("body").append("<div class=\"mask-bg menu-mask-bg\"></div>"); $(".menu-slide").show(); $("html,body").css({height:$(window).innerHeight(), overflow:"hidden"}); setTimeout(function(){ $(".menu-slide").css({transform:"translateX(-50px)"}); },50) }); $("body").on("click", ".menu-mask-bg", function(){ $(".menu-slide").css({transform:"translateX(-100%)"}); $(".menu-mask-bg").remove(); $("html,body").removeAttr("style"); setTimeout(function(){ $(".menu-slide").hide(); },300) }); //search $(".header .search").click(function(){ if($(".search-box").is(":hidden")){ $(this).children("i").removeClass("search-icon").addClass("close-icon"); $(".search-box").fadeIn("fast"); }else{ $(this).children("i").removeClass("close-icon").addClass("search-icon"); $(".search-box").fadeOut("fast"); } }); //nav if($(".nav").length > 0) { var nav = new Swiper(".nav",{ slidesPerView: "auto" }); } </script> <script> $(".pay1 img").click(function () { $(".wxpay").css("display", "block"); $(".alipay").css("display", "none"); $(".pay1 img").addClass("over"); $(".pay2 img").removeClass("over"); }); $(".pay2 img").click(function () { $(".wxpay").css("display", "none"); $(".alipay").css("display", "block"); $(".pay1 img").removeClass("over"); $(".pay2 img").addClass("over"); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { $('.word-pic a').click(function(){ $('.theme-popover-mask').fadeIn(100); $('.theme-popover').slideDown(200); $(".vip-up").hide(); $(".vip-pay").hide(); var downid = '448855' $('.wxpay a').click(function(){ var payurl = 'https://www.77cn.com.cn/hupipay/payment_pay_tz.php?payway=wx&aid='; payurl = payurl.replace('payment', 'youke'); var gotourl = payurl + downid location.href = gotourl; }); $('.alipay a').click(function(){ var payurl = 'https://www.77cn.com.cn/hupipay/payment_pay_tz.php?payway=ali&aid='; payurl = payurl.replace('payment', 'youke'); var gotourl = payurl + downid location.href = gotourl; }); }) $('.theme-poptit .close').click(function(){ $('.theme-popover-mask').fadeOut(100); $('.theme-popover').slideUp(200); }) }) </script> <script src="/js/gobacktop.js" type="text/javascript"></script> </body> </html>