使url缩短一些控制器和操作

时间:2013-03-26 08:08:10

标签: asp.net-mvc asp.net-mvc-4

我想将我的asp.net MVC4应用程序的一些网址缩短。例如,我有Account控制器和此类操作ForgotPassword。网址看起来像这样

http://www.mydomain.com/account/forgotpassword

我想缩短网址(下面的示例),而不重命名实际的控制器和操作名称。最好的方法是什么?

http://www.mydomain.com/a/fp

3 个答案:

答案 0 :(得分:2)

您可以注册一条简单的路线:

routes.MapRoute(
   name: "ForgottenPassword",
   url: "a/fp",
   defaults: new { controller = "Account", action = "ForgottenPassword" }
);
如果你正在使用MVC4,那么

...在RouteConfig.cs中。

答案 1 :(得分:0)

如果我没错,那你谈论友情网址了吗?

请查看@ quysnhat.wordpress.com

有一个非常好的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,但它是另一种选择。