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。 这个工具的用处在于,有时候你希望的匹配路径却被其他的路径定义所代替。它可以向你展示出发生了这种情况。

routingtest

要使用这个工具,只要下载这个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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET 路由约定是一种机制,用于将用户访问网站时输入的 URL 映射到具体的控制器和操作方法。这是基于URL模式的一种约定,通过`System.Web.Routing`命名空间中的`RouteTable`和`Routes`属性来管理。在ASP.NET MVC中,路由主要包括以下几个关键元素: 1. **路由表**: `RouteTable.Routes`是一个`RouteCollection`,它是所有路由规则的集合。 2. **路由声明**: 使用`MapRoute`方法声明一个新的路由,提供了一个模式字符串(template),一个名字(name),以及一个处理器方法(defaults和constraints)。 ```csharp routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); ``` 这个例子中,`"{controller}/{action}/{id}"`是路由模式,`"Home"`、`"Index"`和`UrlParameter.Optional`分别代表默认的控制器、动作和ID参数。 3. **控制器和操作方法匹配**: 当用户请求一个URL时,路由系统会尝试找到最匹配的一个路由,然后把剩余的部分传递给指定的控制器和方法。 4. **参数解析**: `{}`中的名称会被视为参数,如`{controller}`、`{action}`和`{id}`,它们会在请求过程中被自动填充。 为了理解并编写自定义路由,你可以查看`RouteConfig.cs`文件,这里通常集中定义了网站的所有路由规则。常见的路由约定还包括对分页、过滤器等特定功能的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值