问题描述
|
我正在尝试创建可以应用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=联系或
http://www.example.com/Page?name=Contact&id=22
但是我想要上面的URL像
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}\",action = \"Page\" }
);
解决方法
这是一个可能的解决方案。我不确定这是否是正确的方法。
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}\",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}\",action = \"Page\",id = UrlParameter.Optional }
);
// Everything else
routes.MapRoute(
\"Default\",\"{controller}/{action}/{id}\",id = UrlParameter.Optional } // Parameter defaults
);
}
测试了以下路线。这里的站点根URL是http:// localhost:5879 /。对于下面提到的每种情况,请参考下面提供的输出屏幕截图。
http:// localhost:5879 /->使用第一个路线图
http:// localhost:5879 / Home->使用第二条路线图
http:// localhost:5879 / Contact->使用第三条路线图
http:// localhost:5879 / About / 33->使用第三条路线图
http:// localhost:5879 / Home / Page?name = Contact&id = 22->使用第三条路线图
http:// localhost:5879 / Home / Index / 2->使用第四条路线图
屏幕截图1:
屏幕截图2:
屏幕截图3:
屏幕截图4:
屏幕截图5:
屏幕截图6:
希望能给您一些解决问题的想法。