繁体   English   中英

ASP.NET MVC路由和类似Slug的URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM