私は 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 ヘルパーを同じ方法で呼び出し、最初にアクション名を渡し、次にコントローラー名を渡しています。
ここで何が間違っているのか理解できませんでした。誰かが指摘できますか?