[教程]ASP.Net MVC定义URL Routing

文/QLeelulu  出处/博客园+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
定义URL Routing +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
在一个route中,通过在大括号中放一个占位符来定义( { and } )。当解析URL的时候,符号"/"和"."被作为一个定义符来解析,而定义符之间的值则匹配到占位符中。route定义中不在大括号中的信息则作为常量值。+2½_U‚JåU˜www.pin5i.comùsP©6è—
下面是一些示例URL: +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—

+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
通 常,我们在Global.asax文件中的Application_Start事件中添加routes,这确保routes在程序启动的时候就可用,而且 也允许在你进行单元测试的时候直接调用该方法。如果你想在单元测试的时候直接调用它,注册该routes的方法必需是静态的同时有一个 RouteCollection参数。+2½_U‚JåU˜www.pin5i.comùsP©6è—
下面的示例是Global.asax中的代码,演示了添加一个包含两个URL参数action 和 categoryName的Route对象:+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—

引用:
protected void Application_Start(object sender, EventArgs e)+2½_U‚JåU˜www.pin5i.comùsP©6è—
{+2½_U‚JåU˜www.pin5i.comùsP©6è—
    RegisterRoutes(RouteTable.Routes);+2½_U‚JåU˜www.pin5i.comùsP©6è—
}+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
public static void RegisterRoutes(RouteCollection routes)+2½_U‚JåU˜www.pin5i.comùsP©6è—
{+2½_U‚JåU˜www.pin5i.comùsP©6è—
    routes.Add(new Route+2½_U‚JåU˜www.pin5i.comùsP©6è—
    (+2½_U‚JåU˜www.pin5i.comùsP©6è—
        "Category/{action}/{categoryName}"+2½_U‚JåU˜www.pin5i.comùsP©6è—
        , new CategoryRouteHandler()+2½_U‚JåU˜www.pin5i.comùsP©6è—
    ));+2½_U‚JåU˜www.pin5i.comùsP©6è—
}

+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
设置Route参数的默认值 +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
当你定义个一route的时候,你可以分配一个默认值给route的参数。默认值是当URL中没有包含参数的值的时候使用的。你可以在Route类中通过dictionary来设置Default属性来设置route的默认值: +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—

引用:
void Application_Start(object sender, EventArgs e) +2½_U‚JåU˜www.pin5i.comùsP©6è—
{+2½_U‚JåU˜www.pin5i.comùsP©6è—
    RegisterRoutes(RouteTable.Routes);+2½_U‚JåU˜www.pin5i.comùsP©6è—
} +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
public static void RegisterRoutes(RouteCollection routes)+2½_U‚JåU˜www.pin5i.comùsP©6è—
{+2½_U‚JåU˜www.pin5i.comùsP©6è—
  routes.Add(new Route+2½_U‚JåU˜www.pin5i.comùsP©6è—
  (+2½_U‚JåU˜www.pin5i.comùsP©6è—
    "Category/{action}/{categoryName}"+2½_U‚JåU˜www.pin5i.comùsP©6è—
          new CategoryRouteHandler()+2½_U‚JåU˜www.pin5i.comùsP©6è—
  )+2½_U‚JåU˜www.pin5i.comùsP©6è—
    {+2½_U‚JåU˜www.pin5i.comùsP©6è—
      Defaults = new RouteValueDictionary +2½_U‚JåU˜www.pin5i.comùsP©6è—
          {{"categoryName", "food"}, {"action", "show"}}+2½_U‚JåU˜www.pin5i.comùsP©6è—
    }+2½_U‚JåU˜www.pin5i.comùsP©6è—
  );+2½_U‚JåU˜www.pin5i.comùsP©6è—
}

+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
当URL Routing处理URL Request的时候,上面route定义产生的结果如下表所示:  +2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—
+2½_U‚JåU˜www.pin5i.comùsP©6è—

+2½_U‚JåU˜www.pin5i.comùsP©6è—拼吾爱程序人生

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏