您的位置:首页 > 编程语言 > ASP

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

2011-04-07 16:18 585 查看
说明:这种方法不是最佳方法,因为当请求以大写方式请求的时候,比如: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 } // 参数默认值
);


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

谢谢浏览!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐