Appel d'une méthode d'action de mise en page ASP.NET MVC
J'ai une mise en page et une vue partielle qui sont dans le dossier Partagé. Vue partielle présente le top des éléments de menu qui ne sont pas statiques. J'ai donc besoin de faire appel à une méthode d'action pour obtenir des éléments de menu à partir de la base de données. Pour ce faire, j'ai créé un contrôleur et d'ajouter une méthode d'action.
Quand j'essaie de parcourir la page dans un navigateur web, cette erreur s'est produite:
Le contrôleur pour le chemin '/' n'a pas été trouvé ou n'est pas de mettre en œuvre IController.
Remarque:
J'ai essayé le code Html.RenderAction, Html.Méthodes partielles trop...
Et j'ai essayé de créer un autre dossier de vue, et de créer une nouvelle vue partielle et le nouveau contrôleur nommé "nom du dossier + Contrôleur" suffixe.
Mise en page:
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
<div id="header">
@Html.Action("~/Views/Shared/_TopMenu.cshtml", "LayoutController", new {area =""}); //Here is the problem.
</div>
<div>
@RenderBody();
</div>
</body>
</html>
_TopMenu.cshtml:
@model IList<string>
@foreach (string item in Model)
{
<span>item</span>
}
LayoutController (dans le dossier Controllers):
public class LayoutController : Controller
{
//
//GET: /Shared/
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
[ActionName("_TopMenu")]
public ActionResult TopMenu()
{
IList<string> menuModel = GetFromDb();
return PartialView("_TopMenu", menuModel);
}
}
OriginalL'auteur Uğur Aldanmaz | 2014-10-29
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe si vous le mettez dans votre point de vue?
(Et commenter cette jusqu'à ce que tout fonctionne: //[ChildActionOnly])
Layout
trop avecRenderAction
. Mais il n'a pas travaillé. Peut-être que je dorme. Merci!!!!Je n'arrive pas à se détendre. J'ai essayé beaucoup de propositions de solutions. Comme votre réponse. Pourquoi il n'a pas travaillé? Savez-vous la raison?
OriginalL'auteur Richard
Modifier cette ligne,
,
et vérifier.
OriginalL'auteur Venkat
existe différentes façons, pour ce cas, j'aime utiliser le langage html.action dans la mise en page, et dans le contrôle, je vais créer une chaîne de Menu, la chaîne contient le code html j'ai besoin, le contrôleur de la fin, avec le retour de Contenu(menu);
par exemple
Mise en page:
le contrôleur
J'aime parce que je peux les utiliser de nombreuses options pour créer des menus dinamics plus complexes.
autre façon d'utiliser ajax pour récupéré les données et de les utiliser guidon ou de tout autre modèle pour le code
ups j'essaie d'écrire guidon handlebarsjs.com
nope. J'ai déjà trouvé que le guidon 🙂 merci encore.
OriginalL'auteur Pablote
Vous utilisez le mauvais surcharge de la Méthode d'Action. Le 2e paramètre dans la variation n'est pas le controllername mais la actionname.
Vous pouvez vérifier la bonne Méthode surcharges sur ce page
Aussi: Si vous spécifiez des Contrôleurs dans le code Html.Méthode d'Action (que vous pouvez le faire par exemple avec cette variante de la Méthode), vous n'avez pas besoin d'écrire le suffixe "Contrôleur", même si c'est votre nom de Classe. Ainsi, au Lieu d'utiliser la chaîne "LayoutController" vous écrivez simplement "Mise en page".
À ce stade, le cadre est fondée sur une convention.
OriginalL'auteur Marco Kastrup
C'est la façon dont je l'ai fait:
Disposition
Menu Admin Contrôleur
GetAdminMenu.cshtml
OriginalL'auteur t_plusplus