28

私は MVC5 から始めて、MVC5 Getting Startedから最初のプロジェクトを作成しました。

部分レンダリングを試して、以下のように MoviesController にメソッドを追加しました

[ChildActionOnly]
public ActionResult PriceRange()
{
   var maxprice = db.Movies.Max(m => m.Price);
   var minprice = db.Movies.Min(m => m.Price);
   ViewBag.MaxPrice = maxprice;
   ViewBag.MinPrice = minprice;
   return PartialView();
}

ムービー コレクションの最小価格と最大価格を ViewBag に設定し、後でビューに表示します。さまざまなビューでレンダリングしようとしています。

Views/Movies/Index.cshtmlまず、以下のようにレンダリングしようとしました

@{Html.RenderAction("PriceRange");}

メソッドが定義されMoviesControllerているのと同じクラスを使用しているため、そこではうまく機能し、結果が正しく表示されます。PriceRange

Views/Hello/Index.cshtml次に、次のコードで(このビューはを使用しています)でレンダリングしようとしましたHelloWorldController(最初にアクション名を渡し、次にコントローラー名を渡します)

@{Html.RenderAction("PriceRange", "MoviesController");}

ここで実行時エラーが発生しています

パス '/HelloWorld/Index' のコントローラーが見つからないか、IController を実装していません。

Views/Hello/Index.cshtml の完全なコードを次に示します。

@{
    ViewBag.Title = "Movie List";
}
<h2>My Movie List</h2>
<p>Hello from our view template</p>
@{Html.RenderAction("PriceRange", "MoviesController");}

Google でいくつかの例を見つけました。RenderAction ヘルパーを同じ方法で呼び出し、最初にアクション名を渡し、次にコントローラー名を渡しています。

ここで何が間違っているのか理解できませんでした。誰かが指摘できますか?

4

2 に答える 2

59

必要のないコントローラー名に「コントローラー」接尾辞を追加している可能性があります。

試す:

@{Html.RenderAction("PriceRange", "Movies");}
于 2013-11-04T21:34:05.150 に答える
1

コントローラー名は「MoviesController」ではなく「Movies」である必要があります。「MoviesControllerController」というコントローラーを探していると思うからです。

于 2016-10-11T17:19:47.927 に答える