我有MVC3应用程序,我想保留简短的URL。什么是最好或干净的方式来做到这一点? 让我们说我有两个控制器帐户和家庭。我在帐户控制器中拥有所有与帐户相关的任务登录,注销,配置文件,常见问题解答等。家庭控制器中的所有主要任务,如TaskA,TaskB和TaskC。我正在寻找如下网址:
当用户第一次访问网站时,他们需要重定向到登录页面。在任何时候,用户还应该能够从一次控制器操作切换到另一个控制器操作(从TaskA切换到Logoff)。
干净的方法是什么?
答案 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
);