2011-09-23 205 views
1

這裏很基本的問題。爲什麼我得到一個404錯誤,當我嘗試查看將參數傳遞給索引視圖

/供應商/ 123

但我可以看到的頁面,如果我去

/供應商/索引/ 123

有沒有什麼辦法讓我的工作成爲第一種方式?我只是使用在Global.asax中註冊的默認路由。

回答

3

因爲這就是默認路由的定義方式。如果你不想指定actionname你可以修改它是這樣的:

routes.MapRoute(
    "Default", 
    "{controller}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

這是說你可能不應該因爲做這個現在你的路線,你不必指定動作的可能性你希望在給定的控制器上調用這個名稱,這意味着你只能在每個控制器上有一個單獨的動作,而這個動作就是Index。在另一方面,如果你想要做一些這方面的具體控制器上你仍然可以保留默認路由,並添加另一個問題:因爲在後{id}預計動作名稱的基本路由

routes.MapRoute(
    "Vendors", 
    "vendors/{id}", 
    new { controller = "Vendors", action = "Index", id = UrlParameter.Optional } 
); 

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
2

,而是你正試圖把它在控制器名稱之後。

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

更改您的潰敗只是{controller}後接受{id}。就像@Darin所描述的那樣。