本文将以最少的代码想你展示一下的效果:

自定义RUL而不依赖于物理文件名。

使用标记或者代码产生基于route 参数的URL 。

如何获得标记或者代码路由过来的参数。

创建Routes

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

 

我们不妨看下RouteTable 这个类的定义:

public class RouteTable
 {
   private static RouteCollection _instance = new RouteCollection();

   /// <summary>
   /// Gets a collection of objects that derive from the <see cref="T:System.Web.Routing.RouteBase"/> class.
   /// </summary>
   ///
   /// <returns>
   /// An object that contains all the routes in the collection.
   /// </returns>
   public static RouteCollection Routes
   {
     get
     {
       return RouteTable._instance;
     }
   }

   static RouteTable()
   {
   }
 }

先添加第一个Route

routes.MapPageRoute("",
           "SalesReportSummary/{year}",
           "~/sales.aspx");

这是一个一目了然的映射。

routes.MapPageRoute("SalesRoute",
            "SalesReport/{locale}/{year}",
            "~/sales.aspx");

这个也是一样。

routes.MapPageRoute("ExpensesRoute",
           "ExpenseReport/{locale}/{year}/{*extrainfo}",
           "~/expenses.aspx", true,
           new RouteValueDictionary {
               { "locale", "US" },
               { "year", DateTime.Now.Year.ToString() } },
           new RouteValueDictionary {
               { "locale", "[a-z]{2}" },
               { "year", @"\d{4}" } });

       routes.MapPageRoute("ProductRoute",
           "ProductPage/{productname}/{*culture}",
            "~/product.aspx");

可以给Route 添加约束和默认值。

获得Route 参数

路由简单,获得路由过来的参数同样也很简单。

LocaleLiteral.Text = Page.RouteData.Values["locale"] == null ?
           "All locales" : Page.RouteData.Values["locale"].ToString();

       YearLiteral.Text = Page.RouteData.Values["year"].ToString();

[译] 在Web Forms 中使用ASP.NET Routing的更多相关文章

  1. 如何在 ASP.Net Web Forms 中使用依赖注入

    依赖注入技术就是将一个对象注入到一个需要它的对象中,同时它也是控制反转的一种实现,显而易见,这样可以实现对象之间的解耦并且更方便测试和维护,依赖注入的原则早已经指出了,应用程序的高层模块不依赖于低层模 ...

  2. WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

    无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...

  3. 在ASP.NET Web Forms中使用页面导出伪xls Excel表格

    将数据导出为Excel表格是比较常见的需求,也有很多组件支持导出真正的Excel表格.由于Excel能打开HTML文件,并支持其中的table元素以及p之类的文本元素的显示,所以把.html扩展名改为 ...

  4. Asp.Net Web Forms/MVC/Console App中使用Autofac

    本来简单介绍了Autofac在Asp.Net Web Forms中的应用,后来又添加了mvc.控制台应用程序中使用Autofac,详情请看源码. ASP.NET Web Forms使用Autofac, ...

  5. ASP.NET Web Forms的改进

    虽然ASP.NET Web Forms不是vNext计划的一部分,但它并没有被忽视.作为Visual Studio 2013 Update 2的一部分,它重新开始支持新工具.EF集成和Roslyn. ...

  6. asp.net简述Web Forms开发模式

    详情请查阅:http://www.runoob.com/aspnet/aspnet-intro.html 1.Web Forms 是三种创建 ASP.NET 网站和 Web 应用程序的编程模式中的一种 ...

  7. 如何把Qlik Sense嵌入到Web应用中

    (此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...

  8. IIS URL Rewriting and ASP.NET Routing

    IIS URL Rewriting and ASP.NET Routing With the release of the URL Rewrite Module for IIS and the inc ...

  9. ASP.NET MVC中加入Web Forms

    目的 有时候在一个ASP.NET MVC项目发布之后,又需要添加动态页面,同时又不想重新在源代码中添加view,那么这时候就要用上Web Forms了. 步骤 1.在项目根目录添加一个文件夹,在文件夹 ...

随机推荐

  1. Glut 回调函数小结

    2014-04-08  16:25:50   void glutDisplayFunc(void (*func)(void)); 注册当前窗口的显示回调函数 参数: func:形为void func( ...

  2. asp.net修改web.config文件

    private void UpdateConfigFile() { var cfg = System.Web.Configuration.WebConfigurationManager.OpenWeb ...

  3. linux安全加固(1)

    Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了.我们要如何为这类服务器做好安全加固工作呢? 一. 账户安全 1.1 锁定系统中多余的自建帐号 检查方法: ...

  4. HttpResponse对象

    为了响应客户端的请求,同样定义了代表响应的类:HttpResponse类,它也定义在命名空间System.Web下,提供向客户端响应的方法和属性. HttpResponse常用属性和方法 响应对象用于 ...

  5. document.documentElement和document.body的区别

    网页中获取滚动条卷去部分的高度,可以通过 document.body.scrollTop 来获取,比如使div跟着滚动条滚动: <div id="div" style=&qu ...

  6. 搭个 Web 服务器(一)

    导读 我相信,如果你想成为一个更好的开发者,你必须对日常使用的软件系统的内部结构有更深的理解,包括编程语言.编译器与解释器.数据库及操作系统.Web 服务器及 Web 框架.而且,为了更好更深入地理解 ...

  7. WPF 动画(形状、画刷)

    一:形状 在WPF用户界面中,可以通过形状(Shape)来绘制直线.椭圆.矩形及一些多边形的类.通过这些基本的图像,组合成为复杂的图形. Shape类中,主要的形状有Rectangle(),Ellip ...

  8. Linux LAMP环境搭建

    什么是LAMP Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了 ...

  9. django-cms 代码研究(三)插件(plugs in)

    插件(plugs in) djangocms支持的插件有: http://docs.django-cms.org/en/latest/basic_reference/plugin_reference. ...

  10. linux里的vi怎么移动到最后一行

    下面是几个vi与行移动有关的命令: G:光标移至最后一行 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 注意输入命令,需要首先按ESC键回到命令模式. 转自: http://zhid ...