zoukankan      html  css  js  c++  java
  • ASP.NET WebForm也玩强类型URL调用之一:PageMethods简介

    利用URL调用页面的缺点

    在简单的ASP.NET或HTML页面中链接一个页面是很简单的,但是要保证链接的页面确实存在、传递的参数都正确无误并且被正确解析却有一点不同了。下在让我们来看一个简单的例子,你想要访问一个显示客户信息的页面,这个页面需要名叫CustomerID的整形参数,所以你一般会以 "http://myserver/Customer.aspx?CustID=12"的URL来访问, 这初看起来没有问题,但如果这个页面不是你创建的,你怎么知道参数的名字?你又怎么知道参数的类型?为了得到参数的名字和类型你不得不去看代码(但你能保证代码是随时可得到的吗?)或是看文档(文档确实存在吗?即使存在又是不是最新的呢? 你确定开发者在将参数名从CustID改为CustomerID后更新了文档吗?)。

    上面说的是通过URL重定向到一个页面时的限制,下面让我们来看看这种方式的其它限制:

    • 你只能通过文件名引用一个页面,所以就没有编译时检查,你的错误只有在访问网页时才能被发现,这意味着你不能保证你交付的代码是100%正确的,当你意识到你犯了错误时已经晚了,你不得不在修正了错误后重新部署程序。
    • 你不能确切的知道一个页面的参数或其参数集合。
    • 你必须知道每个参数的确切的名字。
    • 你必须以字符串的方式传递参数,这虽然可以工作但可读性却不好。
    • 你不得不手工解析参数(在ASP.NET中通过URL传递的参数可以在Request.QueryString中以字符串的形式得到)。
    • 页面必须验证接收到的参数(比如验证参数是否为空、参数类型是否正确、参数值是否在有效的范围内)。

    PageMethods提供的解决方案

    既然通过URL来调用页面有这么多的缺点,那有没有一种比较好的方式呢?下面就让我们来看看本文的主角PageMethods,PageMethods为每个页面定义了结构化的URL,所以我们可以通过一个简洁的方式调用页面。PageMethods基于严格的页面输入和参数绑定说明,在PageMethods中每个页面暴露出一些方法集合,以便我们按照不同的目的调用页面。

    应用PageMethods也比较简单,你只需要在页面中添加方法,然后在需要公布的方法上添加PageMethods提供的属性,下面让我们来看一个示例,我们在Customer页面中定义了如下方法,然后在每个方法上添加了PageMethods属性,这些这些方法就可以被PageMethods类库调用了,怎么样,很简单吧。

    无标题

    (Customer页面的代码)

    两种解决方案的比较

    下面我们来分别看看用PageMethods方式和URL方式调用Customer页面的区别,首先是应用普通的URL调用方式的页面定义代码和页面调用代码:

    无标题

    (通过URL方式定义页面的代码)

    无标题

    (通过URL方式调用页面的代码)

    然后是通过PageMethods类库调用方式的页面定义代码和页面调用代码:

    无标题

    (通过PageMethods方式的页面定义代码)

    无标题

    (通过PageMethods调用方式的页面调用代码)

    无需多言,通过上面两段代码的对比你就能发现应用PageMethods方式调用页面是多么的方便。

  • 相关阅读:
    [CTSC2008]网络管理
    [HNOI/AHOI2018]转盘
    [HAOI2015]树上染色
    [CTSC2017]吉夫特
    [CTSC2011]幸福路径
    Comet OJ
    2019各省省选试题选做
    HNOI2019 简要题解
    HNOI2019游记
    JOISC2019 简要题解
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/PageMethodsIntroduce.html
Copyright © 2011-2022 走看看