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

在ASP.NET MVC 中,一个简单的例子让 URL 请求的 controller 和 action 小写 ...

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

说明:这种方法不是最佳方法,因为当请求以大写方式请求的时候,比如:http://localhost:2458/Home/About ,经过服务器的判断,如果是大写,则 Response.StutasCode = 301 ,即永久性重定向到 http://localhost:2458/home/about,这样就不太好了。要么在 @Html.ActionLink 的时候就生成小写,这样就好一点,园子里也有类似的文章,比如鹤冲天的

ASP.NET MVC:自定义 Route 以生成小写的 Url

写得很不错。

代码如下:

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            EnforceLowercaseUrl();
        }


        private void EnforceLowercaseUrl()
        {
            var path = Request.Url.AbsolutePath;
            var verbIsGet = string.Equals(Request.HttpMethod, "GET", StringComparison.CurrentCultureIgnoreCase);

            if (!verbIsGet || !path.Any(c => char.IsUpper(c)))
            {
                //当不是 GET 请求或者 URL都是小写的时候,Return 掉
                return;
            }
            string newUrl = path.ToLowerInvariant() + Request.Url.Query;
            Response.RedirectPermanent(newUrl);
        }

 

最后我的建议是:创建 controller 和 action 的时候就命名为小写,管它什么 C# 命名规范。比如创建 HomeController 是,这样 homeController ,呵呵。 

 最后,我强烈建议用 Nuget 获取 LowercaseRoutesMVC.dll 来小写所有的请求!

 

routes.MapRouteLowercase(
    "Default", // 路由名称
    "{controller}/{action}/{id}", // 带有参数的 URL
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);

注意:只是方法名不同,参数的类型与顺序都是一样的!

 

 

 

谢谢浏览!


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
asp.netexcel权限问题发布时间:2022-07-10
下一篇:
ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录发布时间: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