C# ASP.NET MVC路由和Slug-Like URL
目前,我正在使用一个自定义类来将路径转换为小写形式的变体,它可以顺利地工作 例如~/服务/餐饮=>~/服务/餐饮 我的问题是,如果我用一个更像slug的设置替换Pascal的情况,如何让MVC正确解析URL 例如~/Services/FoodAndDrink=>~/Services/food and drink 我在继承的Route类中生成URL,重写GetVirtualPath()函数以进行小写转换,并用破折号和小写变量替换大写字母C# ASP.NET MVC路由和Slug-Like URL,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,目前,我正在使用一个自定义类来将路径转换为小写形式的变体,它可以顺利地工作 例如~/服务/餐饮=>~/服务/餐饮 我的问题是,如果我用一个更像slug的设置替换Pascal的情况,如何让MVC正确解析URL 例如~/Services/FoodAndDrink=>~/Services/food and drink 我在继承的Route类中生成URL,重写GetVirtualPath()函数以进行小写转换,并用破折号和小写变量替换大写字母 我想我必须截取URL并在路由实际发生之前删除破折号,但我不确
我想我必须截取URL并在路由实际发生之前删除破折号,但我不确定在MVC页面周期中这会发生什么。记得以前的一个项目,当时我不得不重写URL。在Global.asax.cs文件中实现应用程序_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;
}
}
我明白了。记得以前的一个项目,当时我不得不重写URL。在Global.asax.cs文件中实现应用程序_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;
}
}
添加了请求的代码。事实上,我改变了主意,因为创建slug被证明是相当困难的。不过,这实际上是针对移动站点的,因此URL格式在添加请求的代码时就不那么重要了。事实上,我改变了主意,因为创建slug被证明是相当困难的。不过,这实际上是针对移动站点的,因此URL格式目前不太重要