2013-04-09 101 views
1

我有一個歷史記錄文件夾的區域,每個年份都有一個視圖。視圖稱爲Year2010,Year2011等,僅用於顯示歷史數據。我試圖簡單地稱他們2010,2011,但它似乎是反對命名約定。而不是有一個路線歷史/ 2010年,我希望能夠使用歷史/ 2010年,這是可能的,如果是這樣的話?Mvc路由和數字視圖名稱

+0

我相信這將要求您有一個名爲'2010'的操作方法,這是一種違反關於方法名稱的C#規範。也許你可以讓你的'Index'動作將年份作爲Id參數,然後使用'View()'的重載來指定視圖名稱。聽起來對我來說是一個壞主意,但你可以嘗試。 – cadrell0 2013-04-09 14:52:48

+1

不完全確定,但你有沒有嘗試:[ActionName(「2010」)] public ActionResult Year2010() – 2013-04-09 15:18:22

+0

上面的評論是我尋找的答案,歡呼! – user517406 2013-04-11 08:17:53

回答

1

您可以爲歷史記錄頁面添加自定義路由,以便該操作默認並將年份作爲參數傳入。

routes.MapRoute(
    "History", 
    "History/{year}", 
    new { controller = "History", action = "Display", year = DateTime.Today.Year } 
); 

然後,在你的控制器,檢查一年過去了,顯示正確的觀點:

public ActionResult Display(int year) 
{ 
    switch (year) 
    { 
     case 2010: 
      return View("Year2010"); 
     case 2011: 
      return View("Year2011"); 
    } 
    return View(); 
}