`
WPComming
  • 浏览: 57542 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Windows Phone开发(17):URI映射

 
阅读更多

前面在讲述导航的知识,也讲了控件,也讲了资源,样式,模板,相信大家对UI部分的内容应该有了很直观的认识了。那么今天讲什么呢?不知道大家在练习导航的时候是否发现一个问题?

当我们向页面传递一个参数的时候,是没问题的,但是,如果我们在XAML中使用这样的URI时,你敢保证它还能正常运行呢?

/PageaTest.xaml?name=小强&age=100

你发现,嘿,咋回事了?怎么报错了?不知道有没有去思考,为什么呢?

好,先问你一句,你学过Web开发吗?或者说,了解HTML吗?如果你了解,好,你已经找到答案了。

哈哈,对了,就是编码和转义的问题,“&”符号用在XAML中同样需要转义,但你一定发现了,如果把它换成转义符,一来好像很难看,二来,也不太安全。大家知道,MVC中是使用什么来访问页面的?是的,能过控制器的行为,而且是经过URI映射的。

同理,在Silverlight的导航中,也同样需要的,在WP中依然适用。

先说一下不使用URI映射的情况下如何解决该问题。

对的,就是改用C#代码来导航,这样就可以避开了XAML转义了。


看看效果吧,怎么样,解决了吗?

别高兴着,主角还出场呢,今天我们讲的URI映射,所以下面我们要用URI映射的方式来完美解决这问题。

用URI映射难吗?不难,很简单,我们用到两个类:

1、UriMapper ,它用来管理映射的集合,它是头目分子来的,很重要的哦,它下面可以有成千上万的虾兵蟹将。

2、UriMapping,这些家伙是跟着UriMapper老大混饭吃的。

也就是说,一个UriMapper里面可以包含1到N个UriMapping不等,一位老大可以带领若干个马仔,“兄弟上阵一群狼”就是这个道理。

可能由于各种原因,你的超级应用程序会有N多种映射方案,所以说允许N个UriMapping,你知道一支乐队不可能个个都拉小提琴的,显然需要其它乐器的配合。

好的,那么,URI是如何映射的?相信玩过C#的朋友,一定会熟悉这种语句:

string ss = string.Format("你的人品值是:{0}", -100);

上面的{0}是占位符,01234依次往下推,上面原理相信大家都懂,首先在“你的人品值是:{0}”中找到“{0}”,然后用-100为替换{0},所以上面的字符串变为:你的人品值是:-100.

URI映射的原理是一样的,比如:

/Student/{id} ----> /studentdetail.xaml?sid={id}

大家猜到上面的URI是怎么映射的吗?

看左边,其它是多余,是“伪”兵,用来迷惑敌人的,真正的数据是{id},而箭头右边就是真正的URI地址,它也有一个{id},对,它在左的伪URI中找到{id},然后用它的值来替换右边的{id}。

理解吗?例如我传一个URI,/Student/201201030,而最终映射后的真实地是/studentdetail.xaml?sid=201201030,哈,现在明白吗?

不明白?我再举几个,你自己研究一下看看找到规律没有?

/cat/{cid} ---> /categ.xaml?id={cid}

/cat/5025 ---> /categ.xaml?id=5025

/{id}/{name} ----> /goodslist.xaml?gid={id}&gname={name}

/302/天地七号 -----> /goodslist.xaml?gid=302&gname=天地七号

/{sex}/{order}/{type} ----> /listmat.xaml?sex={sex}&acord={order}&swType={type}

/女/3/7 ------> /listmat.xaml?sex=女&acord=3&swType=7

至于为什么要用“/”,呵呵,因为这个不用转义嘛 ,二为,为了让运行库可以识别占位符的位置,也可作为分隔符,一举两得。

怎么样,有感觉了没?还没?不要紧,一起动手玩一玩就有感觉了。

第一步,打开App.xaml.cs文件,在App的构造函数中添加URI映射。


然后,回到首页,加入以代码导航代码。


分享到:
评论

相关推荐

    RhodyMap:URI 映射

    罗迪地图 CSC 305 项目

    Cannonball:URI规范化gem

    炮弹URI规范化gem安装将此行添加到您的应用程序的Gemfile中: gem 'cannonball'然后执行: $ bundle或将其自己安装为: $ gem install cannonball用法a = Cannonball :: URI . new ( 'http://www.nytimes.com' )=> &...

    URI:URI练习

    URI:URI练习

    uriparser:uriparser库的Rust绑定

    尿酸 Rust绑定到 C库。 安全绑定正在逐步被编写。 发牌 此存储库中的Rust绑定属于UNLICENSE。 注意: uriparser库本身已获得BSD许可-有关详细信息,请参见其回购

    windows phone 消息推送

    windows phone 消息推送 代码测试类,需要部署到真机上才能获取到uri

    uri解决方案:Uri Fase iniciante do

    uri解决方案:Uri Fase iniciante do

    network-uri:URI操作工具

    network-uri软件包该软件包提供了用于解析和解析URI以及创建和解析相对URI引用的工具,这些工具紧紧遵循URI规范IETF RFC 3986 [1]。 该程序包中的主要模块Network.URI从network-2.6发行版的网络程序包中分离出来。...

    URI:URI的地址解析

    URI URI的地址解析

    uri:URI操作库

    URI Uri软件包提供了简单直观的类来管理PHP中的URI。 你将能够 解析,构建和解析URI 从不同来源(字符串,PHP环境,基本URI,URI模板等)创建URI; 处理内部化; 从URI推断属性和特征; <?php use League \ ...

    Windows Phone 8. 增加提醒机制

    一些Windows® Phone应用程序需要把安排通知给用户;这里典型的情景是一个警报或一个即将来临的事件的提醒。 能够预定通知是Windows PhoneMango许多新特点之一。它预定通知的二种类型:警报(Alarm)和提醒...

    uri-js-rails:URI.js用于Rails资产管道

    Uri :: Js :: Rails Rails的 安装 将此行添加到您的应用程序的Gemfile中: gem 'uri-js-rails', :group => :assets 然后执行: $ bundle 或将其自己安装为: $ gem install uri-js-rails 用法 添加到您的...

    Android代码-kroki

    {uri-kroki}[Kroki] provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag), C4 (with PlantUML), Ditaa, Erd, GraphViz, Nomnoml, Mermaid, PlantUML, SvgBob and UMLet......

    uri.c:URI 组件编码器解码器

    uri.c URI 组件编码器/解码器安装$ clib install littlstar/uri.c用法# include < uri> # include < stdio># include < string># include " uri.h "intmain ( void ) { char *enc = NULL ; char *dec = NULL ; enc =...

    liuri:URI解析库

    liuri_parse(3)名称liuri_parse - 一个小的验证 URI (RFC 3986) 解析器概要# include < liuri>int liuri_parse ( char const *uri, int size, struct liuri_components *components);描述将 'uri' 解析为其基本组件...

    uritemplate-clj:URI模板的Clojure实现,如RFC 6570(http

    uritemplate-clj首先公开uritemplate函数,以URI模板和值映射为输入并返回填充的模板: user=> ( ns test # _=> ( :require [uritemplate-clj.core :as templ])) nil test=> ( templ/uritemplate " ...

    URI_Python:URI在线判断答案

    URI_Python 我将所有有关URI Online Judge网站问题的答案添加到此存储库中。 在代码中可以找到问题描述的所有链接。

    URI-Online-Judge:URI解析度

    URI在线法官决议HTML / JS代码注释答案仅是[removed]标记内的内容。 1. < script > ... < / script > 在数据输入中,使用lines.shift()更改提示() 。 1. var a = prompt ( ) -- > var a = ...

    URI-Online-Judge:URI Online Judge代码解决方案存储库分为9大类

    URI在线裁判URI Online Judge是URI大学计算机科学系正在开发的一个项目。 该项目的主要目标是提供编程实践和知识共享。分类目录1 BEGINNER对于刚开始编程的任何人的基本问题... 2 AD-HOC模拟问题,日期,游戏和一般...

    uri-modern:URI WordPress主题

    URI现代 URI Modern是为罗德岛大学设计的WordPress主题。 它旨在替换大学网站上当前正在使用的所有主题,并统一在线品牌和体验。 2.4.0的新功能 URI Modern 2.4.0是次要版本。 添加用于动态控制操作栏“应用”按钮...

    URI:URI在线裁判练习

    URI URI在线裁判练习

Global site tag (gtag.js) - Google Analytics