ページングサポートの実装後にこのエラーが発生します。コントローラータイプ 'DinnersController'のアクション 'Index'に対する現在の要求は、以下のアクションメソッド間で曖昧です。
私は、HTMLチュートリアルのこのステップにしています:http://nerddinnerbook.s3.amazonaws.com/Part8.htm
ページングサポートの実装後にこのエラーが発生します。コントローラータイプ 'DinnersController'のアクション 'Index'に対する現在の要求は、以下のアクションメソッド間で曖昧です。
私は、HTMLチュートリアルのこのステップにしています:http://nerddinnerbook.s3.amazonaws.com/Part8.htm
エラーが発生すると、ASP.NET MVCは同じ名前の2つのアクションを検出し、どちらを使用するかを選択できません。
あなたDinnersController.cs
で2索引のアクションを持っている場合:
public ActionResult Index() {
と:
public ActionResult Index(int? page) {
その後、あなたは最初のアクションを削除する必要があります。 2番目は最初のバージョンの '更新された'バージョンです。 二アクションへの要求を受け入れる:=
/ディナー
/夕食ページ= 2
/夕食/インデックス
/夕食/インデックスページ? 2
変更i N RegisterRoutesそれはまたの要求を受け入れる:
/夕食/ページ/ 2
あなたが持つ省エネ行動を飾る(ポストバック)を、保存するための一方が提供する、同じ名前の2つのアクションを持つことができます[AcceptVerbs(HttpVerbs.Post)]
または単に[HttpPost]
IMHOの人々は、「余分なルートを保存する」ための方法として、UrlParameter.Optionalのアイデアを紹介するブログ、書籍、ドキュメントの絶対数が多いため、このメソッド2、同じ名前、異なる署名を取得します。 route.MapRoute( "simple"、 "{controller}/{action}/{id}")、 new {id = "{Action}/{id}"のように、ルートのUrlParameter列挙型を追加して "public ActionResult List()ほとんどの場合、これは動作するために元の "ActionResult List()"メソッドを削除する必要があるということです。 – rism
MVCはあなたのコントローラ内のアクションメソッドのオーバーロードをサポートしていません。同じコントローラ上に異なるメソッドシグネチャを持つ2つのIndex()アクションを持つことはできません。
作業をテストする例を作成するには、パラメータを受け入れないIndex()アクションを削除し、null可能なintをパラメータとして取るアクションに置き換える必要があります。
MVCがアクションのオーバーロードをサポートしているといいでしょう。私は自分の行動の複数のバージョンを入れ替えることができるようにしたいと思っています。このアクションが最初に行われるように[PriorityAttribute(10)]を持っています。それから私はデータベースの設定から、あるいは私が望むようにその番号を変更することができます。 –
実際のエラー出力とスタックトレースを提供できますか?さもなければ、あなたがどこにいるのか、そしてアプリケーションがエラーを投げるときに何をしているのかを伝えることは難しいです。 – Maciej