ASP.NET 路由

ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。由于 URL 不必映射到文件,所以可以在 Web 应用程序中使用 URL,这些 URL 是描述性的用户操作,因此更易于被用户理解。

在一个不使用路由的 ASP.NET 应用程序中,对 URL 的传入请求通常映射到磁盘上的物理文件,如 .aspx 文件。在 ASP.NET 路由中,您可以定义 URL 模式,该模式包含在处理 URL 请求时使用的值的占位符。在运行时,应用程序名称后面的 URL 部分根据您所定义的 URL 模式分析为离散值。

ASP.NET 路由不同于其他 URL 重写方案。URL 重写通过在将请求发送到网页之前实际更改 URL 来处理传入请求。此外,URL 重写通常没有相应的 API 来创建基于模式的 URL。在 URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。

由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。如果必须创建一个 URL,则将参数值传递到为您生成 URL 的方法中。若要更改 URL 模式,请在某位置更改该模式,您在应用程序中创建的基于该模式的所有链接将自动使用新模式。

定义的 URL 模式称作“路由”。在路由中,您可以指定占位符,用于映射到从 URL 请求中分析的值。您还可以指定用于匹配 URL 请求的常量值。

在路由中,您可以通过用大括号( { 和 })括住占位符来定义占位符(称为“URL 参数”)。分析 URL 时将/ 字符解释为分隔符。将路由定义中不是分隔符和不在大括号中的信息视为一个常量值。将从两个分隔符之间提取的值分配给占位符。

您可以在分隔符之间定义多个占位符,但必须用一个常量值分隔开。

ASP.NET 路由调试

在Mix会议上,Scott Hanselman’s演示了一个简单的route测试程序(route tester),这个工具会显示当前地址栏中请求地址里存在的Route数据内容(页面里的Route Data)。因此你可以在地址栏中输入各种Urls来观察它匹配了哪一个路径。在页面底部,显示了你的程序中所有被定义的route列表。它可以让你看到当前的URL匹配哪个你定义的route。 这个工具的用处在于,有时候你希望的匹配路径却被其他的路径定义所代替。它可以向你展示出发生了这种情况。

要使用这个工具,只要下载这个zip文件,然后把dll文件放到你的程序的Bin目录里,再在Global.asax.cs文件的Appliation_Start函数里添加一行代码(黑体字的)。

protected void Application_Start(object sender, EventArgs e) {   RegisterRoutes(RouteTable.Routes); RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); }

它会使用DebugRouteHandler来更新那些你的应用中所有的route处理程序(IRouteHandler),这些route处理程序原本是为了处理程序中每个不同的route特别定义的。

具体参看:ASP.NET Routing Debugger

http://www.informit.com/content/images/9780672329982/samplepages/0672329980_CH02.pdf

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IIRF(Ionics Isapi Rewrite Filt er)实现在IIS 5/6上重写Url

    IIS 7的URL Rewrite功能非常强大,可以通过Microsoft URL Rewrite Module来实现,可参看文章使用Microsoft URL...

    张善友
  • Novell 发布Mono 1.2 推动.NET跨平台

          微软开发框架的开源版本现在能够在更多现有.NET应用程序上运行。Mono项目宣布发布Mono 1.2版——微软.NET框架的开源版本。该项目由Nov...

    张善友
  • Entity Framework(EF) 5

    在Entity Framework宣布开源后不久Entity Framework(EF) 5就正式发布了,ADO.NET官方博客上EF5 Released列出了...

    张善友
  • URL 与网络资源分享

    这时候我突然反应过来,我过去其实一直没有区分清楚这里的概念的差别,World Wide Web,简称 WWW,中文“万维网”,又叫 Web,而不是 intern...

    zgq354
  • 认识 URL 及其编码

    URL(Uniform Resoure Locator)中文译为统一资源定位符,是 Internet 上资源的地址,比如一个文本文件,一张图片,一个视频。通过 ...

    Dabelv
  • 一个基于Java的开源URL嗅探器

    这是一个可以检测并规范化文本中的URL地址的Java库。 ? 今天,我们很高兴做一个分享,因为我所在的 Linkedin 公司 开源了我们做的一个ULR探测工具...

    用户1667431
  • URL

    URL是统一资源定位符的简称,它表示Internet上某资源的地址。通过URL我们可以访问网络上的各种资源。

    sr
  • 爬虫课堂(十四)|URL的去重方法

    黄小怪
  • 如何构建网站URL,使其更加百度搜索友好?

    相当于搜索引擎而言,URL对于百度蜘蛛的抓取、索引、排名显得格外重要,合理的配置URL,往往使你的SEO工作,事半功倍,相反,则是事倍功半。

    数据通20847430
  • 外部接口如何统一api地址?

    常见的做法有 1.使用if或case语句判断参数值; 优点:简单、易理解 缺点:接口多时,if或case分支太多,代码丑陋 2.动态代理 这点怎么解析参数,调用...

    掌上编程

扫码关注云+社区

领取腾讯云代金券