2012-05-13 40 views
1

我有一些問題在控制器中重載索引操作。在控制器我有以下動作:MVC3重載索引操作獲取500錯誤

public ActionResult Index(int id) 
{ 
    return View(); 
} 

public ActionResult Index() 
{ 
    return View(); 
} 

要任一URL(controllername /或controllername/1)導致500錯誤。但是,當我使用:

public ActionResult Index(int? id) 
{ 
    return View(); 
} 

控制器名稱/ URL的作品,但控制器名稱/ 1導致404錯誤。我的global.asax是相當香草:

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

我想要做的是能夠處理空id和整數id值。任何建議將不勝感激。

謝謝!

+2

你試過(用int?)來製作controllername/Index/1嗎? –

回答

1

我想你會需要明確的是,路線:

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

,如果它不工作,你可能需要更加明確,之前補充一點:

routes.MapRoute(
    "ControllerName", 
    "ControllerName", 
    new { controller = "ControllerName", action = "Index"} 
); 
1

我認爲你不需要在這裏重載,但只需要在空索引操作中進行檢查。 重載操作不是一個好主意,因爲框架不知道哪個操作要調用空索引。

的每一個動作超載添加自定義路由將會導致因爲太多的定製路由的較慢的響應時間解決。