2015-11-05 32 views
0

我有這樣URL沒有釣到RouteConfig ASP MVC

name: "XXXXX", 
url: "page/{label}-{id}, 
defaults: new 
    { 
     controller = "Page", action = "Results", 
     label= UrlParameter.Optional, id= UrlParameter.Optional 
    }, 

的路線,當我打電話/頁/白-1,它是確定 我希望還能夠趕上網址/網頁/ -1 (我有這樣的舊URL,我想重定向他們)...但這個URL/page/-1沒有捕捉到,我有一個404.

但爲什麼它沒有抓住,而我指出參數爲可選的 ?我怎樣才能抓住它?

+1

你需要按安東尼Shaw的答案,因爲你只能有可以打上'UrlParameter.Optional'最後一個參數的附加路線(其他明智的沒有配合你提供的參數的方式) –

回答

1

我會定義第二條路線,以連字符開頭,然後用適當的標籤重定向到新路線。

name: "XXXXX1", 
url: "page/-{id}, 
defaults: new 
    { 
     controller = "Page", action = "OldResults", 
     id= UrlParameter.Optional 
    }, 

然後在你的控制器:

public ActionResult OldResults(int id) { 
    //goto database get item by id 
    var item = db.getItem(id); 
    return RedirectToAction("Results", new {id = id, label = item.label}); 
}