0

我想让我的 asp.net MVC4 应用程序的一些 url 更短。例如我有Account控制器和这样的动作ForgotPassword。网址看起来像这样

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

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

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

3 回答 3

2

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

routes.MapRoute(
   name: "ForgottenPassword",
   url: "a/fp",
   defaults: new { controller = "Account", action = "ForgottenPassword" }
);

...如果您使用的是 MVC4,请在 RouteConfig.cs 中。

于 2013-03-26T08:13:40.953 回答
0

如果我没记错的话,那么您在谈论友好的 URL 吗?

请看@ quysnhat.wordpress.com

Hanselman 的网站上有一篇非常好的帖子。

此外,与友好网址相关的问题很少(如果它对您有帮助):-

如何在 ASP.NET MVC 中创建友好的 URL?

http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx

于 2013-03-26T08:17:05.893 回答
0

最简单但不是最好的方法是手动编码您的自定义路线:

routes.MapRoute(
    name: "AccountForgotRoute",
    url: "a/fp/{id}",
    defaults: new { controller = "Account", action = "ForgotPassword", id = UrlParameter.Optional }        
);

不利的一面是,如果您将拥有大量控制器和操作方法,并且您希望所有这些都被“缩短”,那么您将不得不编写大量路由。

一种替代方法是在数据库中定义您的自定义路由并将其写入文件。因此,例如,您在数据库行中accountcontroller-forgotpassword有一个值为 的键a/fp,您可以动态构建路由定义,将其写入文件并让您的应用程序获取它。您的应用程序如何获取路由定义可以这样完成。该链接仍然适用于 MVC 4。但是这个链接真的很乱,IMO,但它是一个替代方案。

于 2013-03-26T09:02:12.983 回答