关于asp.net mvc:MVC 3保持短网址

MVC 3 keeping short url

我有MVC3应用程序,我想在其中保留短网址。 最好的或干净的方法是什么?
可以说我有两个控制器Account和Home。 我在帐户控制器中拥有与帐户相关的所有任务,包括登录,注销,配置文件,常见问题解答等。 家庭控制器中的所有主要任务,如TaskA,TaskB和TaskC。 我正在寻找如下网址:

  • www.mydomain.com/Logon
  • www.mydomain.com/注销
  • www.mydomain.com/Profile
  • www.mydomain.com/常见问题解答
  • www.mydomain.com/TaskA
  • www.mydomain.com/TaskB
  • 用户首次访问该网站时,他们需要重定向到登录页面。 用户还可以随时从一次控制器动作切换到另一个控制器动作(从TaskA到注销)。

    干净的方法是什么?


    您无需为每个URL设置路由。 在路线约束的帮助下,您可以执行以下操作:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            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
            );


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

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

    如果未找到该URL的所有其他匹配项,则默认路由可以定义您的起始页。

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