urlMapping----隐藏真正的url

使用ASP.Net 2.0中的urlMapping技术,我们可以将真实的url映射成其它的url,从而达到隐藏真正的url,使显示出的url对用户更加容易理解。

 

1、新建一个asp项目,在项目里增加一个web page命名为“urlMapping.aspx”。

 

2、在页面上拖放一个label控件,更改Text属性为“Choose a link below:”(点击下面的链接)。然后拖放两个HyperLink控件,把它们的Text属性改为“Link01”和“Link02”,NavigateUrl改为“~/Software.aspx”和“~/Hardware.aspx”。如果此时我们运行这个页面(右键点击--〉View in Browser),当鼠标移到HyperLink上时,浏览器底部的状态栏会显示出超链接“Software.aspx”或“Hardware.aspx”。如果单击这个超链接就会报错,因为我们并没有建立这两个页面文件。

 

3、在项目里打开Web.config文件,找到节点,在其下面加入如下内容:

 

 

 

 

这就是把Software.aspxHardware.aspx映射到urlMapping.aspx,并用不同的QueryString来表示。

 

4、为了检查运行效果,我们再往页面上托两个控件。一个是Label,修改Text属性为QueryString;另一个为TextBox,其缺省id为TextBox1。然后双击urlMapping页面,在Page_Load里写上一条语句:

this.TextBox1.Text =Request.QueryString["id"];

这是运行结果,注意地址栏显示的是真正的url:

 

这是点击Link01后的结果。地址栏显示的是Software.aspx,但实际调用的是urlMapping.aspx?id=software,TextBox里显示的就是传递的id参数。


我写这一篇是因为网站地图有些问题困扰了我很久(详见http://topic.csdn.net/u/20100621/22/cfe5231e-222c-411f-a1f6-9a7374d2188d.html),很长时间没找到答案。如果用url重写,不但麻烦,实现起来也很困难。

 

使用urlMapping,如果映射的项目比较少应该很方便,但是对几千种实时变化的产品来说,就力不从心了。当选择分类时用urlMapping,而显示某一产品的详细内容时则不用urlMapping,这样会不会很诡异?如果让内行看到会笑掉大牙的!

 

还有两个问题。其一是容易引起目录层次的误会,如果在网页中调用图片,有可能显示不出来。其二是在VS2008里会显示文件找不到,因为确实没有这样的文件。虽然运行没问题,但总有一堆错误提示挺烦人的。当然我们可以用Respnse.Redirect("~/Software.aspx")来替换。就是麻烦了一点。

你可能感兴趣的:(ASP.NET)