首页 / 知识
Asp.Net MVC:如何在我的网址中启用破折号?
2023-04-13 08:56:00

Asp.Net MVC: How do I enable dashes in my urls?我希望在我的 URL 中使用破折号分隔单词。所以代替:
我想:
这可能吗? 您可以像这样使用 ActionName 属性:
请注意,您需要将视图文件称为"My-Action.cshtml"(或适当的扩展名)。您还需要在任何 Html.ActionLink 方法中引用"my-action"。 控制器没有这么简单的解决方案。 编辑:MVC5 更新 全局启用路由:
现在使用 MVC5,属性路由已被吸收到项目中。您现在可以使用:
关于操作方法。 对于控制器,您可以应用
使用
剪断..
您可以创建一个自定义路由处理程序,如本博客所示: http://blog.didsburydesign.com/2010/02/how-to-allow-hyphens-in-urls-using-asp-net-mvc-2/
...以及新路线:
这里提出了一个非常相似的问题:ASP.net MVC support for URL's with hyphens 我为这个问题开发了一个开源 NuGet 库,它隐式地将 EveryMvc/Url 转换为 every-mvc/url。 大写 url 是有问题的,因为 cookie 路径区分大小写,大多数互联网实际上是区分大小写的,而 Microsoft 技术将 url 视为不区分大小写。 (更多关于我的博文) NuGet 包:https://www.nuget.org/packages/LowercaseDashedRoute/ 要安装它,只需在 Visual Studio 中打开 NuGet 窗口,方法是右键单击项目并选择 NuGet 包管理器,然后在"在线"选项卡上键入"小写虚线",它应该会弹出。 或者,您可以在包管理器控制台中运行此代码: 之后,您应该打开 App_Start/RouteConfig.cs 并注释掉现有的 route.MapRoute(...) 调用并添加它:
就是这样。所有的 url 都是小写、虚线和隐式转换,无需您执行任何操作。 开源项目网址:https://github.com/AtaS/lowercase-dashed-route 这是我在 ASP.NET MVC 5 中使用区域所做的事情,它的工作方式非常有魅力。我也不必重命名我的视图。 在 RouteConfig.cs 中,执行以下操作:
在你的控制器中,在你的类定义之前添加这个:
如果在本地机器上进行测试,浏览器中显示的 URL 是:localhost/sample-area/my-action。您不需要重命名您的视图文件或任何东西。我对最终结果非常满意。 启用路由属性后,您可以删除您拥有的任何区域注册文件,例如 SampleAreaRegistration.cs。 这篇文章帮助我得出了这个结论。希望对你有用。 Asp.Net MVC 5 将支持属性路由,允许更明确地控制路由名称。示例用法如下所示:
要在 v5 之前使用 Asp.Net MVC 的项目中获得这种行为,可以在 AttributeRouting 项目中找到类似的功能(也可作为 nuget 使用)。事实上,Microsoft 联系了 AttributeRouting 的作者,以帮助他们实现 MVC 5。 你可以定义一个特定的路由如:
但是这个路由必须在你的默认路由之前注册。 您可以编写一个从 Route 类 GetRouteData 派生的自定义路由来去除破折号,但是当您调用 API 来生成 URL 时,您必须记住将破折号包含在操作名称和控制器名称中。 这应该不会太难。 我对 MVC 还是很陌生,所以对它持保留态度。这不是一个优雅的、包罗万象的解决方案,但在 MVC4 中为我做了诀窍: 如果您有权访问 IIS URL 重写模块 ( http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx ),您可以简单地重写 URL。 对 /my-controller/my-action 的请求可以重写为 /mycontroller/myaction,然后就不需要编写自定义处理程序或其他任何东西。访问者会得到漂亮的 url,而你会得到 MVC 可以理解的。 这是一个控制器和动作的示例,但您可以将其修改为更通用的解决方案: 这样做的可能缺点是您必须将项目切换为使用 IIS Express 或 IIS 以便在开发期间进行重写。 |
最新内容
相关内容
如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python如何在linux下运行python
python如何在linux下运行python,培训,绝对路径,文件,程序,这个地方,头部,文本,上面,以上,时候,Linux下运行python有两种方式:1、直接使用pythopython如何在cmd调用程序
python如何在cmd调用程序,代码,培训,路径,空格,文件,程序,下面,以上,目录,更多,我们在编写python代码时,可以在交互模式下运行代码,也可以用编python如何在python中打小数点
python如何在python中打小数点,培训,财政,标准,指数,函数,模块,参数,类型,精度,浮点,python提供了三种浮点值:内置的float与complex类型,以及标python如何在python导入tkinter
python如何在python导入tkinter,培训,标准,控件,应付自如,图形界面,实例,模块,以上,之后,消息,Tkinter是Python的标准GUI库。Python使用Tkintpython如何在cmd窗口运行python程
python如何在cmd窗口运行python程序,代码,培训,路径,空格,窗口,文件,程序,下面,以上,目录,我们在编写python代码时,可以在交互模式下运行代码,python代码如何在命令行运行
python代码如何在命令行运行,代码,培训,路径,空格,文件,下面,以上,目录,更多,内容,我们在编写python代码时,可以在交互模式下运行代码,也可以用python整型对象是如何在内存中存储
python整型对象是如何在内存中存储的?,代码,培训,地址,位置,内存,开辟,整数,分配,存在,负数,在Python中整型对象所存储的位置是不同的,有一些您将如何在 Ruby on Rails 应用程
您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?,您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?,应用程序如何在Windows中将Python脚本作为
如何在Windows中将Python脚本作为服务运行?,如何在Windows中将Python脚本作为服务运行?,绘制,体系结构,共享存储,对象,How do you run如何在SQL Server VARCHAR / NVARC
如何在SQL Server VARCHAR / NVARCHAR字符串中插入换行符,如何在SQL Server VARCHAR / NVARCHAR字符串中插入换行符,研究,与此,类似关于vb.net:如何在64位应用程序和VB
关于vb.net:如何在64位应用程序和VB2008 Express上启用“编辑并继续”功能?,关于vb.net:如何在64位应用程序和VB2008 Express上启用“