gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 4 - 允许 URL 中的破折号/连字符

转载 作者:行者123 更新时间:2023-12-04 23:59:28 25 4
gpt4 key购买 nike

我正在努力如何在我的 MVC 4/ASP.NET 4.5 应用程序中的 URL 中正确允许破折号/连字符...出于某种原因,MVC 将破折号转换为下划线,这不是我想要的。

在发布问题之前,我已经进行了大量搜索,但仍然找不到任何简单的解决方案。对于这样一个简单的配置,我发现的一切似乎都不合时宜。

基本上,我希望能够访问以下 URL:

www.mysite.com/dashes-in-url

例如,我创建了一个名为的 Controller :

破折号在 urlController.cs

Controller 的名称很好,并允许 Controller 名称中的破折号。

但是,当我为上述 Controller 的索引创建 View 时,它创建的 View 为:

文件夹:/Views/dashes_in_url

在该文件夹中有一个 Index.cshtml 文件 - 但它用下划线替换了我的破折号。

所以我必须访问网址:

www.mysite.com/dashes_in_url

使用下划线代替 URL 中的破折号。

有谁知道任何优雅,简单的解决方案来实现我想要做的事情?

在这方面的任何帮助将不胜感激,谢谢!

最佳答案

我开发了一个开源 NuGet 库 对于这个问题,它隐式地将 EveryMvc/Url 转换为 every-mvc/url。

虚线网址对 SEO 更友好,更易于阅读。 ( More on my blog post )

NuGet 包:https://www.nuget.org/packages/LowercaseDashedRoute/

要安装它,只需通过右键单击项目并选择 NuGet 包管理器,在 Visual Studio 中打开 NuGet 窗口,然后在“在线”选项卡上键入“小写虚线路由”,它就会弹出。

或者,您可以运行此代码 在包管理器控制台中:
Install-Package LowercaseDashedRoute
之后,您应该打开 App_Start/RouteConfig.cs 并注释掉现有的 route.MapRoute(...) 调用并添加以下内容:

routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
new RouteValueDictionary(
new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
new DashedRouteHandler()
)
);

就是这样。所有的 url 都是小写、虚线和隐式转换的,你不需要做任何更多的事情。

开源项目网址: https://github.com/AtaS/lowercase-dashed-route

关于asp.net-mvc - ASP.NET MVC 4 - 允许 URL 中的破折号/连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com