[英]ASP.NET MVC Routing and Slug Like URLs
目前,我正在使用自定义类将路径转换为小写变体,该类可以顺利运行
例如 〜/服务/餐饮=>〜/服务/餐饮
我的问题是,如果我将Pascal Case替换成更笨拙的安装程序,该如何使MVC正确解析URL。
例如 〜/ Services / FoodAndDrink =>〜/ services /食品和饮料
我在继承的Route类中生成URL,重写GetVirtualPath()函数以转换为小写字母,并用破折号和小写字母替换大写字母。
我想我必须拦截URL并在路由真正发生之前先删除破折号,但是我不确定这在MVC页面周期中的下降位置
弄清楚了。 记得以前的项目,当时我必须进行URL重写。 在Global.asax.cs文件中实现Application_BeginRequest方法(无论该类碰巧是什么),进行一些检查以确保您重写了正确的路径,然后使用Context.RewritePath()方法
编辑:由于要求代码...
public class MvcApplication : System.Web.HttpApplication
{
//---snip---
protected void Application_BeginRequest(object sender, EventArgs e)
{
var url = RewriteUrl(Request.Path);
Context.RewritePath(url);
}
//---snip---
private string RewriteUrl(string path)
{
if (!path.Contains("Content") && !path.Contains("Scripts"))
{
path = path.Replace("-", "");
}
return path;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.