MVC 3保持简短的网址

时间:2011-06-20 02:20:21

标签: asp.net-mvc model-view-controller asp.net-mvc-3

我有MVC3应用程序,我想保留简短的URL。什么是最好或干净的方式来做到这一点?  让我们说我有两个控制器帐户和家庭。我在帐户控制器中拥有所有与帐户相关的任务登录,注销,配置文件,常见问题解答等。家庭控制器中的所有主要任务,如TaskA,TaskB和TaskC。我正在寻找如下网址:

  1. www.mydomain.com/Logon
  2. www.mydomain.com/Logoff
  3. www.mydomain.com/Profile
  4. www.mydomain.com/FAQs
  5. www.mydomain.com/TaskA
  6. www.mydomain.com/TaskB
  7. 当用户第一次访问网站时,他们需要重定向到登录页面。在任何时候,用户还应该能够从一次控制器操作切换到另一个控制器操作(从TaskA切换到Logoff)。

    干净的方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以为与默认路由不匹配的特定网址设置路由。例如:

routes.MapRoute("Logon", "logon/", new { controller = "account", action = "logon" });
routes.MapRoute("TaskA", "TaskA/", new { controller = "home", action = "taska" });

如果找不到网址的所有其他匹配项,您的默认路由可以定义您的起始页。

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}/", // URL with parameters
            new { controller = "account", action = "logon", id = UrlParameter.Optional } // Parameter defaults

答案 1 :(得分:6)

您无需为每个网址设置路线。在路线限制的帮助下,您可以执行以下操作:

        routes.MapRoute(
            "Home", // Route name
            "{action}", // URL with parameters
            new { controller = "Home", action = "Index" }, // Parameter defaults
            new { action = "TaskA|TaskB|TaskC|etc" } //Route constraints
        );

        routes.MapRoute(
            "Account", // Route name
            "{action}", // URL with parameters
            new { controller = "Account", action = "Logon" }, // Parameter defaults
            new { action = "Logon|Logoff|Profile|FAQs|etc" } //Route constraints
        );