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