2014-12-07 76 views
0

我有兩個必需的路徑:正確映射正確的路線行動,類似的URL

1:本地主機:1207 /博客/ 2014/12 /條,名稱

2:本地主機:1207 /博客/ 2014/12

爲每個路由現在我已經寫了自定義映射

1:

routes.MapRoute(
      name: "BlogArticle", 
      url: "blog/{year}/{month}/{title}", 
      defaults: new 
      { 
       controller = "Blog", 
       action = "Detail", 
       year = UrlParameter.Optional, 
       month = UrlParameter.Optional, 
       title = UrlParameter.Optional 
      } 
     ); 

2:

routes.MapRoute(
      name: "BlogMonthList", 
      url: "blog/{year}/{month}", 
      defaults: new 
      { 
       controller = "Blog", 
       action = "MonthList", 
       year = UrlParameter.Optional, 
       month = UrlParameter.Optional 
      }); 

第二個不起作用,我不確定爲什麼。 作爲答案的一部分,你能解釋一下爲什麼?

我的解決方案必須使用RouteConfig.cs我控制器

例子:

public BlogController : Controller{ 
    public ActionResult MonthList(int year, int month) 
    { 
     var model = new MonthArticlesModel() 
     { 
      Year = year, 
      Month = month    
     }; 

     return View(model); 
    } 

    public ActionResult Detail(int year, int month, string title) 
    { 
     var model = new DetailModel(); 
     return View(model); 
    } 

}

+0

這兩條路線中的'year'和'month'是否都是可選的? – 2014-12-07 23:41:01

+0

年份的月份參數不應該是可選的 – cpoDesign 2014-12-08 07:07:17

+0

這種情況下,我的答案應該爲你工作。 – 2014-12-08 07:10:46

回答

1

的問題是沒有辦法的途徑來區分,因爲你做所有參數都是可選的,並且/Blog/2014/12/Article-Name/Blog/2014/12都與第一條路線相匹配。

我建議你遵循更傳統的路線,但是你可以通過指定路由作爲

routes.MapRoute(
    name: "BlogMonthList", 
    url: "blog/{year}/{month}", 
    defaults: new { controller = "Blog", action = "MonthList" } 
); 

routes.MapRoute(
    name: "BlogArticle", 
    url: "blog/{year}/{month}/{title}", 
    defaults: new { controller = "Blog", action = "Detail" } 
); 

然後/Blog/2014/12/Article-Name將跳過第一條路線(只接受2個參數)使這項工作,並重定向到Detail(int year, int month, string title)/Blog/2014/12會匹配第一條路線並重定向到MonthList(int year, int month)

+0

我已更新我的實施,但月份列表操作未解決 – cpoDesign 2014-12-08 09:26:43

+0

適用於我。這是前兩條路線嗎?它們是否按我所示的順序排列? – 2014-12-08 09:28:20

+0

你的方法'公衆的ActionResult MonthList(詮釋年,詮釋月)'和'公衆的ActionResult細節(詮釋年,詮釋月,字符串標題)'? – 2014-12-08 09:33:21