2011-05-25 107 views
0

我正在尝试创建可应用1和2类型URL的路由。MVC3路由中的可选参数

1 - 第一条路线将在应用程序的开始,我想要2种类型的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是通过“名称”参数来从数据库加载内容。我想这个URL像

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

网址

其中 “联系人”和“关于”是URL中传递的“名称”参数的值。以下是使用的路线

routes.MapRoute(
       "DynamicPages", 
       "{name}", 
       new { controller = "Home", action = "Page" } 
      ); 

回答

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. http://localhost:5879/ - >使用第一路线地图
  2. http://localhost:5879/Home - >使用第二路线地图
  3. http://localhost:5879/Contact - >使用第三路线地图
  4. http://localhost:5879/About/33 - >用途third route map
  5. http://localhost:5879/Home/Page?name=Contact&id=22 - >使用第三路线地图
  6. http://localhost:5879/Home/Index/2 - >使用第四路线地图

截图#1:

Scenario 1

截图#2:

Scenario 2

截图#3:

Scenario 3

截图#4:

Scenario 4

截图#5:

Scenario 5

截图#6:

Scenario 6

希望给你一些想法,以解决您的问题。

+0

感谢您的详细回复。让我进行一些测试,然后回到你身边。 – Pirzada 2011-05-26 02:14:54