• 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");
            }
        }
    }

     

  • 相关阅读:
    [转]《三国演义》人名英文翻译妙评 你也来评评!
    Effective C++:改善程序技术与设计思维的55个有效做法(第三版)(中文版)(预订)Effective C++ 3RD
    A Closer Look At Parallax Occlusion Mapping
    [转]收录全部作品,《寂静岭套装》发售开始
    [转]程序员版《桃花庵》
    Cg 1.5 Beta 2
    FilteredTextBox控件
    CollapsiblePanel控件
    DynamicPopulate控件
    HoverMenu控件的使用
  • 原文地址:https://www.cnblogs.com/frank888/p/4660263.html
Copyright © 2020-2023  润新知