Asp.NET 实战1:路由



1:路由
public class RouteConfig
    {
        /// <summary>
        /// 系统默认的路由设置
        /// </summary>
        /// <param name="routes"></param>
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
}
在Global中的Application_Start 方法中调用RegisterRoutes

Defaults:的作用是默认,既 你如果缺什么值,他就把这个值默认给你补上,从而达到匹配这条路由规则,同时如果有多个路由规则,那么程序是按顺序进行匹配的,就意味着,我们要将比较特殊的路由规则放在前面。

例如有路由规则:
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "LayoutDemo", action = "LayoutdEmo1", id = UrlParameter.Optional }
            );
        }

Control 如下
public class LayoutDemoController : Controller
    {
        //
        // GET: /LayoutDemo/

        public ActionResult LayoutdEmo1()
        {
            return View("LayoutdEmo1");
        }

    }
  url: http://localhost:xxx/
 这样同样就直接访问LayoutdEmo1 这个action了,如果action里面没有参数,url中有参数,那么这个参数是会被忽略的,从而可以匹配。
如果action有参数(而参数又不能为空(就是在参数前面加问号)),而url中没有参数,又没有默认参数,这样是要出问题的。
参见http://www.cnblogs.com/wintersun/archive/2009/01/12/1374473.html
http://www.cnblogs.com/hmiinyu/category/349761.html(好文章 一定要看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值