1

ASP.NET MVC 4 プロジェクトで、EF クラスのスキャフォールディングを使用して MVC コントローラーを追加しました。つまり、CRUD 操作です。それらはすべて機能します。アクション メソッドを手動で追加し、それらを指すビューに Html.ActionLink() を追加すると、404 エラーが発生します。

たとえば、コントローラーに AddImage メソッドを追加します。

public ActionResult AddImage(int id)
{
    var car = db.Cars.Find(id);
    return View("AddImage",car);
} 

これは、Car オブジェクトに関連付けられた画像を追加するためのビューを返すだけです。対応する Index.cshtml に、次を追加します。

@Ajax.ActionLink("Add Image", "AddImage", new { id = item.CarId }, new AjaxOptions { UpdateTargetId = "modal",OnSuccess="showDialog" })

レンダリングすると、そのリンクをクリックするとコンソールに 404 が表示されます。もう1つの奇妙なことは、デバッガーで実行すると、メソッドに設定されたブレークポイントが中空で、小さな警告アイコンが表示され、この行に実行可能コードが関連付けられていないことを示しています.

RouteConfig には何も追加していません。Default だけがあり、動作するはずです。HttpPost 属性を使用したオーバーロードがありましたが、それがなくても 404 が返されます。

以前のプロジェクトでは、アクション メソッドを問題なく実行でき、それらはすべて機能します。では、ここで何が問題なのですか?

助けてください、Stackoverflow、あなたは私の唯一の希望です。

4

2 に答える 2

0

コメントで David の助けを借りて、プロジェクトを奇妙な状態にするために何をしたかを理解したと思います。簡単に言うと、Update-Database を呼び出さずに移行を追加するなど、モデルに何かを追加しました。データベースを最新の状態にせずにアプリを実行してみました。

それほど多くのエラーは発生しませんでしたが、VS を再起動し、プロジェクトの bin フォルダーと obj フォルダーを削除し、出力パスを bin/Debug ではなく bin/ に変更した後 (多くの Stackoverflow の質問で見つかりました)、最終的に正しいエラーメッセージを取得しました。

次に、更新を実行しました。作業中のプロジェクト。

于 2013-06-12T18:36:56.997 に答える
0

これを書く

public ActionResult AddImage(int id)
{
    var car = db.Cars.Find(id);
    return View(car);
} 

リンクは空白のない「AddImage」でなければなりません

@Ajax.ActionLink("AddImage", "AddImage", new { id = item.CarId }, new AjaxOptions { UpdateTargetId = "modal",OnSuccess="showDialog" })
于 2013-06-12T19:18:47.817 に答える