【问题标题】:make url shorter of some controllers and actions使某些控制器和操作的 url 更短
【发布时间】:2013-03-15 23:02:36
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果我没记错的话,那么您说的是友好 URL 吗?

      请看@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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多