zoukankan      html  css  js  c++  java
  • mvc路由5大属性(2)

    DetaTokens属性:

    该属性是附加自定义值的集合,这些自定义的值将被传递到路由处理程序,但不参与路由拼配过程,在动作内部,只能通过控制器的RouteData属性访问在DataTokens中包含的值

     示例:

     如果有一个新站点:并且通过url设置需要访问数据库

     解决方案一:

             路由定义: Route bolg = new Route(

                    "blog/{database}/{year}/{month}/{day}",

                    new MvcRouteHandler()

                    );

                blog.Defaults = new RouteValueDictionary(

                    new

                    {

                        controller = "Home",

                        action = "index"

                    }

                    );

                bolg.Constraints = new RouteValueDictionary(

                    new

                    {

                        database = "database1 |database2",

                        year = @"\d{2}|\d{4}",

                        month = @"\d{1,2}",

                        day = @"\d{1,2}"

                    }

                    );

                routes.Add(blog);

     

         Action定义:

    public ActionResult Index(string database ,string year,string month ,string day)

            {

                string constr = string.Empty;

                switch (constr)

                {

                    case "database1":

                        constr = "database1_constr";

                        break ;

                    case "database2":

                        constr = "database2_constr";

                        break ;

                  

                }

                ViewData["Database_Msg"] = string.Format("connecting to database {0}", constr);

                return View();

            }

    解决方案二:

    示例:

      路由: Route sport= new Route(

                    "blog/sport/{year}/{month}/{day}",

                    new MvcRouteHandler()

                    );

                sport.Defaults = new RouteValueDictionary(

                    new

                    {

                        controller = "Home",

                        action = "index"

                    }

                    );

                sport.Constraints = new RouteValueDictionary(

                    new

                    {

                       

                        year = @"\d{2}|\d{4}",

                        month = @"\d{1,2}",

                        day = @"\d{1,2}"

                    }

                    );

                sport.DataTokens = new RouteValueDictionary(

                    new { database = "sport" });

                routes.Add(sport);

     

         Route arch= new Route(

                    "blog/arch/{year}/{month}/{day}",

                    new MvcRouteHandler()

                    );

                arch.Defaults = new RouteValueDictionary(

                    new

                    {

                        controller = "Home",

                        action = "index"

                    }

                    );

                arch.Constraints = new RouteValueDictionary(

                    new

                    {

                       

                        year = @"\d{2}|\d{4}",

                        month = @"\d{1,2}",

                        day = @"\d{1,2}"

                    }

                    );

                arch.DataTokens = new RouteValueDictionary(

                    new { database = "arch" });

                routes.Add(arch);

         DataTokens 动作中使用:

         public ActionResult Index(string year,string month ,string day)

            {

              

            ViewData["Database_Msg"] = string.Format("connecting to database   {0}", RouteData.DataTokens["database"]);

                return View();

            }

    RouteHandler属性:

    处理请求的类的一个实例,处理请求类总是MvcRouteHandler,如果不希望默认方式,可以通过实习IRouteHandler接口及其唯一的方法GetHttpHandler,这样会导致无法继承Mvc。

  • 相关阅读:
    向MyEclipse添加Oracle数据库
    如何让搜索引擎抓取AJAX内容?
    XCode常用快捷键
    VMware Workstation 9上安装Mac OS X 10.8
    IOS学习第一篇——利用Xcode中的Interface Builder创建Hello World示例
    FM 101.7
    SqlServer游标操作
    添加COOKIE
    c#活动目录操作
    WCF服务调用方式
  • 原文地址:https://www.cnblogs.com/linsu/p/2413522.html
Copyright © 2011-2022 走看看