And*_*ess 1 c# asp.net-mvc asp.net-mvc-routing
目前我正在使用自定义类将路径转换为小写变体,这样可以毫无障碍地工作
防爆.〜/服务/餐饮=>〜/服务/餐饮
我的问题是,如果我用一个更像slug的设置替换Pascal Case,我怎样才能让MVC正确解析一个URL
防爆.〜/ Services/FoodAndDrink =>〜/服务/食品和饮料
我在继承的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;
}
}
Run Code Online (Sandbox Code Playgroud)