Je commence avec MVC5 et j'ai créé le premier projet à partir de MVC5 Getting Started .
Nous essayons maintenant avec le rendu partiel et avons ajouté une méthode dans MoviesController comme ci-dessous
[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();
}
Il définit les prix Min et Max de la collection Movies dans ViewBag qui sont ensuite affichés à la vue. J'essaie de le rendre sur des vues différentes.
J'ai d'abord essayé de le rendre à Views/Movies/Index.cshtml
comme ci-dessous
@{Html.RenderAction("PriceRange");}
Il fonctionne bien là-bas et les résultats s'affichent correctement car il utilise MoviesController
, la même classe que la méthode PriceRange
définie.
Ensuite, j'ai essayé de le rendre à Views/Hello/Index.cshtml
(cette vue utilise HelloWorldController
) avec le code suivant (en passant d'abord le nom de l'action puis le nom du contrôleur)
@{Html.RenderAction("PriceRange", "MoviesController");}
Ici, il donne une erreur d'exécution
Le contrôleur pour le chemin "/ HelloWorld/Index" est introuvable ou n'implémente pas IController.
Voici le code complet de Views/Hello/Index.cshtml
@{
ViewBag.Title = "Movie List";
}
<h2>My Movie List</h2>
<p>Hello from our view template</p>
@{Html.RenderAction("PriceRange", "MoviesController");}
J'ai trouvé quelques exemples via Google, ils appellent l'aide de RenderAction de la même manière, en passant d'abord le nom de l'action puis le nom du contrôleur.
Je ne pouvais pas comprendre ce que je fais de mal ici. Quelqu'un peut-il le signaler?
Il se peut que vous ajoutiez le suffixe "Controller" au nom du contrôleur qui n'est pas requis.
Essayer:
@{Html.RenderAction("PriceRange", "Movies");}
Le nom du contrôleur doit être "Movies" et non "MoviesController". Parce que maintenant je crois qu'il cherche un contrôleur appelé "MoviesControllerController".