在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1:ASP.NET 路由 http://msdn.microsoft.com/zh-cn/library/cc668201.aspx
URL 模式可以包含文本值和变量占位符(也称为“URL 参数”)。文本和占位符位于由斜杠 (/) 字符分隔的 URL 段中。 当生成请求时,URL 分析为段和占位符,变量值提供给请求处理程序。此过程类似于分析查询字符串中的数据并将该数据传递给请求处理程序的方法。在两种情况下,变量信息都包括在 URL 中并以键值对的形式传递给处理程序。对于查询字符串,键和值都位于 URL 中。对于路由,键是在 URL 模式中定义的占位符名称,只有值位于 URL 中。 在 URL 模式中,可以通过用大括号({ 和 })括住占位符来定义占位符。可以在一个段中定义多个占位符,但必须用一个文本值分隔开。例如,{language}-{country}/{action} 是有效的路由模式。但是,由于占位符之间没有文本值或分隔符,所以 {language}{country}/{action} 不是有效的模式。因此,路由无法确定在哪里将 language 占位符的值与 country 占位符的值分隔开。 下表演示有效的路由模式和一些与模式匹配的 URL 请求的示例。 在 Web 窗体应用程序中,通过使用 RouteCollection 类的 MapPageRoute(String, String, String) 方法来创建路由。MapPageRoute 方法创建 Route 对象,并将其添加到 RouteCollection 对象。可以在传递到 MapPageRoute 方法的参数中指定 Route 对象的属性。 通常情况下,您在 Global.asax 文件中 Application_Start 事件的处理程序调用的方法中添加路由。该方法可确保应用程序启动时路由可用。还使您能够在对应用程序进行单元测试时直接调用方法。如果您想在对应用程序进行单元测试时直接调用一个注册路由的方法,则该方法必须是静态的 , 并且必须具有一个 RouteCollection 参数。 下面的示例演示从 Global.asax 文件中添加一个 Route 对象的代码,该对象定义了名为 action 和 categoryName 的两个 URL 参数。具有指定模式的 URL 定向到名为 Categories.aspx 的物理页。 protected void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute("", "Category/{action}/{categoryName}", "~/categoriespage.aspx"); }
定义路由时可以为参数分配一个默认值。如果 URL 没有包括该参数的值,则会使用默认值。通过将字典对象分配给 Route 类的 Defaults 属性,可以设置路由的默认值。下面的示例演示如何使用 MapPageRoute(String, String, String, Boolean, RouteValueDictionary) 方法添加具有默认值的路由。 void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute("", "Category/{action}/{categoryName}", "~/categoriespage.aspx", true, new RouteValueDictionary { { "categoryName", "food" }, { "action", "show" } }); } ASP.NET 路由处理 URL 请求时,在示例中演示的路由定义(使用针对 categoryName 的 food 的默认值和针对 action 的 show 的默认值)得到下表列出的结果。 向路由添加约束
URL 如何与路由匹配
2:演练:在 Web 窗体应用程序中使用 ASP.NET 路由 http://msdn.microsoft.com/zh-cn/library/dd329551.aspx
3: 如何:定义 Web 窗体应用程序的路由 http://msdn.microsoft.com/zh-cn/library/cc668177.aspx
4:如何:从路由创建 URL 通过路由构造 URL http://msdn.microsoft.com/zh-cn/library/cc668176.aspx (相当于是帮一个超链接,构造一个符合某一个路由规律的 url 地址,如果 路由规律改变了,那么将会自动生成匹配新路由规则的 Url地址 ) 官方定义为:利用 ASP.NET 的路由功能,您可以编程方式生成基于路由定义的 URL。指定参数值,并在需要时指定一个路由名称,然后 ASP.NET 将生成一个对应于匹配的路由的 URL 字符串。如果更改路由 URL 模式,则除非模式中的参数发生更改,否则您无需更改生成 URL 的代码或标记。
5:如何:在路由页面中访问 URL 参数 http://msdn.microsoft.com/zh-cn/library/dd535620.aspx (相当于是,你通过优化后的url传值过来了,那么在页面中,如何取出和使用这个值?如何在控件上 绑定这个值?) 官方定义:在使用路由的 ASP.NET Web 窗体应用程序中,URL 的某些段可以包含变量信息。请求处理程序(如 .aspx 页)以键值对集合的形式接收此信息,与接收查询字符串数据的方式类似。对于查询字符串,键和值都位于 URL 中。对于路由,键是在 URL 模式中定义的占位符名称,只有值位于 URL 中。可以使用代码或标记访问包含 URL 参数值的集合。 int year = Convert.ToInt32(Page.RouteData.Values["year"]) //检索路由参数并将其转换为整数值<asp:Label ID="Label1" runat="server" Text="<%$RouteValue:year%>" /> //显示一个在其 Text 属性中使用 RouteValue 表达式的 Label
6:ASP.NET 路由与 URL 重写的区别 ASP.NET 路由不同于 URL 重写。URL 重写通过在将请求发送到网页之前实际更改 URL 来处理传入请求。例如,一个使用 URL 重写的应用程序可能会将 URL 从 /Products/Widgets/ 更改为 /Products.aspx?id=4。此外,URL 重写通常没有相应的 API 来创建基于模式的 URL。在 URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。 由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。如果必须创建一个 URL,则将参数值传递到为您生成 URL 的方法中。若要更改 URL 模式,请在某位置更改该模式,您在应用程序中创建的基于该模式的所有链接将自动使用新模式。
上面的都是 微软 msdn 的官方解释和演示 下面是一位博客园的朋友 写的路由的演示,简单易懂 ASP.NET的路由系统:URL与物理文件的分离 http://www.cnblogs.com/artech/archive/2012/03/19/aspnet-routing-01.html |
请发表评论