我正在尝试创建可以应用1和2类型URL的路由。
1 - 第一条路线将在应用程序开始时,我想要2种可用于访问索引页面的URL。当我在最后有一个带有Home的URL而不是输入2时,我无法点击下面的路径。
http://www.example.com Or http://www.example.com/Home
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index", name = "" }
);
2 - 这种类型的URL传递“Name”参数以从DB加载内容。我希望这个网址像
http://www.example.com/Page?name=Contact或
http://www.example.com/Page?name=Contact&id=22
但我想要上面的网址
http://www.example.com/Contact或http://www.example.com/About
或者
http://www.example.com/Contact/22或http://www.example.com/About/33
其中 Contact和About是URL中传递的“Name”参数的值。以下是使用的路线
routes.MapRoute(
"DynamicPages",
"{name}",
new { controller = "Home", action = "Page" }
);
答案 0 :(得分:2)
这是一个可能的解决方案。我不确定这是否是正确的方法。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//To match http://www.mysite.com
routes.MapRoute(
"RootUrl",
"",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
//To match http://www.mysite.com/Home
routes.MapRoute(
"RootUrlWithAction",
"Home/{action}",
new { controller = "Home", action = "Index" }
);
//To match http://www.mysite.com/Contact Or
// http://www.mysite.com/About Or
// http://www.mysite.com/Contact/22 Or
// http://www.mysite.com/About/33
routes.MapRoute(
"DynamicPages",
"{name}/{id}",
new { controller = "Home", action = "Page",
id = UrlParameter.Optional }
);
// Everything else
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
}
测试了以下路线。此网站根网址为 http://localhost:5879/ 。请参阅下面提供的输出屏幕截图,以了解下面提到的每个方案。
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
希望能帮助您解决问题。