我想让我的 asp.net MVC4 应用程序的一些 url 更短。例如我有Account
控制器和这样的动作ForgotPassword
。网址看起来像这样
http://www.mydomain.com/account/forgotpassword
我想在不重命名实际控制器和操作名称的情况下缩短 url(下面的示例)。最好的方法是什么?
http://www.mydomain.com/a/fp
我想让我的 asp.net MVC4 应用程序的一些 url 更短。例如我有Account
控制器和这样的动作ForgotPassword
。网址看起来像这样
http://www.mydomain.com/account/forgotpassword
我想在不重命名实际控制器和操作名称的情况下缩短 url(下面的示例)。最好的方法是什么?
http://www.mydomain.com/a/fp
您可以注册一个简单的路线:
routes.MapRoute(
name: "ForgottenPassword",
url: "a/fp",
defaults: new { controller = "Account", action = "ForgottenPassword" }
);
...如果您使用的是 MVC4,请在 RouteConfig.cs 中。
如果我没记错的话,那么您在谈论友好的 URL 吗?
Hanselman 的网站上有一篇非常好的帖子。
此外,与友好网址相关的问题很少(如果它对您有帮助):-
http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx
最简单但不是最好的方法是手动编码您的自定义路线:
routes.MapRoute(
name: "AccountForgotRoute",
url: "a/fp/{id}",
defaults: new { controller = "Account", action = "ForgotPassword", id = UrlParameter.Optional }
);
不利的一面是,如果您将拥有大量控制器和操作方法,并且您希望所有这些都被“缩短”,那么您将不得不编写大量路由。
一种替代方法是在数据库中定义您的自定义路由并将其写入文件。因此,例如,您在数据库行中accountcontroller-forgotpassword
有一个值为 的键a/fp
,您可以动态构建路由定义,将其写入文件并让您的应用程序获取它。您的应用程序如何获取路由定义可以这样完成。该链接仍然适用于 MVC 4。但是这个链接真的很乱,IMO,但它是一个替代方案。