传统路由

1.传统路由的路由模板,设置默认值,可选参数的写法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace WebApplication9
{
    public class RouteConfig
    {
        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 }
            );

        }
    }
}

2.设置路由约束

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace WebApplication10
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute("blog", "{year}/{month}/{day}",
                new { controller = "blog", action = "index"},
                new {year=@"\d{4}",month= @"\d{2}",day= @"\d{2}" }
                );

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

3.新建BlogController,在index方法里面设置断点,发现访问http://localhost:62844/2014/01/01既可以访问到,并且拿到year,month,day的值,此时如果输入http://localhost:62844/14/01/01则不满足要求就会返回404

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication10.Controllers
{
    public class BlogController : Controller
    {
        // GET: Blog
        public ActionResult Index(int year, int month, int day)
        {
            return View();
        }

    
    }
}

4.另外添加一个Test路由

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace WebApplication10
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Test",
                url: "code/p/{controller}/{action}/{id}",
                defaults: new { controller = "Section", action = "index", id = UrlParameter.Optional }
            );

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

 

5.在视图中可以指定不同的路由名来生成不同的超链接,生成的超链接为<a href="/code/p/section/index/123">to Test</a> 

<a href="/Home/index/123">to Default</a>


@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@Html.RouteLink("to Test","Test", new { controller = "section", action = "index",id=123 })
@Html.RouteLink("to Default","Default", new { controller = "Home", action = "index",id=123 })

 

6.在项目中点击右键添加区域

7.在区域目录下AdminAreaRegistration.cs里面会自动增加区域的路由设置

using System.Web.Mvc;

namespace WebApplication10.Areas.Admin
{
    public class AdminAreaRegistration : AreaRegistration 
    {
        public override string AreaName 
        {
            get 
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

8.在Areas/Admin/Controllers下面添加UserController,此时可以通过http://localhost:62844/admin/user访问到UserController里面的Index方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication10.Areas.Admin.Controllers
{
    public class UserController : Controller
    {
        // GET: Admin/User
        public ActionResult Index()
        {
            return View();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值