• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETMVCRoute的几种配置方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.使用httpContext.Request.UserAgent(俗称UA)来过滤传进来的Url请求,在RegisterRoutes里Add如何路由:

  routes.Add("chrome", new ElevenRoute());

public class ElevenRoute : RouteBase //扩展这个类
    {
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            if (httpContext.Request.UserAgent.IndexOf("Chrome/") >= 0)//通过拿到http的上下文,为所欲为,判断请求进来的浏览器版本,来过滤用户请求等等。
            {
                return null;
            }
            else
            {
                RouteData routeData = new RouteData(this, new MvcRouteHandler());
                routeData.Values.Add("controller", "Home");
                routeData.Values.Add("action", "Refuse");
                return routeData;
            }
        }
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            return null;
        }
    }

2.使用固定的Url访问服务器上的文件,一般用于不给员工开访问服务器的权限,但是要查看服务器上的日志,怎么办。

routes.Add("Eleven", new Route("Eleven/201903042135", new ElevenRouteHandler()));

public class ElevenRouteHandler : IRouteHandler //扩展RouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            return new ElevenHttpHandler();
        }
    }
    public class ElevenHttpHandler : IHttpHandler
    {
        public bool IsReusable => true;

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //context.Response.Write("This is Eleven's Framework");
            string text = File.ReadAllText(context.Server.MapPath("~/Web.Config"));
            context.Response.Write(text);
            context.Response.End();
            //context.Response.Write($"Now is {DateTime.Now.ToShortTimeString()}");
        }
    }

3.匹配以Brad开头的地址,控制器就用Home(defaults的作用就是,当你输入http://localhost:8088/Brad的时候,匹配的还是http://localhost:8088/Home)

routes.MapRoute(
                name: "Brad",
                url: "Brad/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );//1 匹配以Brad开头的地址,控制器就用Home

4.写死了WYD就访问Home/About

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

5.从Url中直接读取年月日参数

routes.MapRoute(
               name: "Regex",
               url: "{controller}/{action}_{Year}_{Month}_{Day}",
               defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
               constraints: new { Year = @"^\d{4}", Month = @"^\d{2}", Day = @"^\d{2}", }
           );
public string Format(int year, int month, int day)
        {
            return $"This is {year}-{month}-{day}";
        }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET设置数据格式与String.Format使用总结(转)发布时间:2022-07-10
下一篇:
【ASP.NET】ItemDataBound之repeater 和 listview发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap