2012-05-13 7 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エラーになります。私がやりたい何

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

がnullのIDだけでなく、整数のID値を処理することができます:私のGlobal.asaxのはかなりバニラです。どんな提案も大歓迎です。

ありがとうございます!

+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

私はあなたはここで過負荷を必要としないと思うが、nullのためのインデックスアクション内のチェックが必要です。 アクションのオーバーロードは良い考えではありません。なぜなら、フレームワークはnullインデックスを呼び出すアクションを知らないからです。

アクションオーバーロードごとにカスタムルーティングを追加すると、解決するカスタムルートが多すぎるため応答時間が遅くなります。

関連する問題