1

コントローラーで Index アクションをオーバーロードする際に問題が発生しました。コントローラーには、次のアクションがあります。

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

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

いずれかの URL (controllername/ または controllername/1) にアクセスすると、500 エラーが発生します。ただし、使用する場合:

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

controllername/ URL は機能しますが、controllername/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
);

私がやりたいことは、null ID と整数 ID 値を処理できるようにすることです。どんな提案でも大歓迎です。

ありがとう!

4

2 に答える 2

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"}
);
于 2012-05-13T15:14:45.583 に答える
1

ここではオーバーロードは必要ないと思いますが、null のインデックス アクション内でチェックする必要があるだけです。null インデックスの場合、フレームワークはどのアクションを呼び出すかがわからないため、アクションのオーバーロードはお勧めできません。

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

于 2012-05-13T15:23:14.130 に答える