mvc路由特性学习1

修改App_Start/RouteConfig.cs

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

namespace Web
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            //注释掉系统生成的代码后,自定义路由。
            routes.MapMvcAttributeRoutes();

            //routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

 

AccountController.cs

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

namespace Web.Controllers
{
    //[Route("account/{action}")]//给控制器(类)中的操作方法定义一个全局的规则,如果想对单独的操作方法重写访问路由,那么在对应的操作方法上定义特性即可,在单独的操作的方法上定义特性会覆盖全局的路由规则。
    [RoutePrefix("account")]//给当前控制器中的操作方法给定一个默认的前缀,当操作方法没有加控制器名称的时候会自动的为每个控制器增加前缀,从而避免写重复的代码
    [Route("{action}")]
    public class AccountController : Controller
    {
        // GET: Account
        //[Route("account/{year}/{month}/{day}")]//从用户请求的url通过路由规则映射到此操作方法
        [Route("~/")]//使用~/作为当前路由模板的开头 自动忽略前缀
        [Route("")]//增加/路由的支持
        [Route("index")]
        public ActionResult Index(string year="",string month="",string day="")
        {
            ViewBag.Message = year + month + day+"---";
            return View();
        }
    }
}

 ----------------------特性路由练习二-------------------------------------

AccountController.cs

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

namespace Web.Controllers
{
    //[Route("account/{action}")]//给控制器(类)中的操作方法定义一个全局的规则,如果想对单独的操作方法重写访问路由,那么在对应的操作方法上定义特性即可,在单独的操作的方法上定义特性会覆盖全局的路由规则。
    [RoutePrefix("account")]//给当前控制器中的操作方法给定一个默认的前缀,当操作方法没有加控制器名称的时候会自动的为每个控制器增加前缀,从而避免写重复的代码
    [Route("{action=Login}")]//给当前的控制器指定一个默认的操作方法
    public class AccountController : Controller
    {
        // GET: Account
        //[Route("account/{year}/{month}/{day}")]//从用户请求的url通过路由规则映射到此操作方法
        //[Route("~/")]//使用~/作为当前路由模板的开头,路由前缀就会被忽略掉
        //[Route("")]//增加/路由的支持
        [Route("index")]
        public ActionResult Index(string year="",string month="",string day="")
        {
            ViewBag.Message = year + month + day+"---";
            return View();
        }

        [Route("index/{id:int}")]//给路由指定一个内联约束 系统自带的有好几种约束类型。
        public ActionResult Index(int id)
        {
            return View();
        }
        public ActionResult Login()
        {
            ViewBag.Message = "登录";
            return View("Index");
        }
    }
}

 

转载于:https://www.cnblogs.com/frank888/p/4660263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值