MVC de l'Appel d'une vue à partir d'un autre contrôleur
Mon projet de construction est comme:
- Contrôleurs/Contrôleur D'Articles Articlescontroller.cs
- Contrôleurs/CommentsController.cs
- Vues/Articles/Lire.aspx
Lire.aspx prend un paramètre dire "sortie", qui est les détails de l'article d'id et ses commentaires, est passé de ArticlesController.cs
Maintenant, je veux écrire puis lire le commentaire:: write()
& Read()
funct dans CommentsController.cs
Pour la lecture de l'article, avec ses commentaires, je tiens à appeler Views/Articles/Read.aspx
de CommentsController.cs
en passant le paramètre de sortie de CommentsController.cs
Comment puis-je faire cela?
Mise à JOUR
Code Ici:
public class CommentsController : AppController
{
public ActionResult write()
{
//some code
commentRepository.Add(comment);
commentRepository.Save();
//works fine till here, Data saved in db
return RedirectToAction("Read", new { article = comment.article_id });
}
public ActionResult Read(int article)
{
ArticleRepository ar = new ArticleRepository();
var output = ar.Find(article);
//Now I want to redirect to Articles/Read.aspx with output parameter.
return View("Articles/Read", new { article = comment.article_id });
}
}
public class ArticlesController : AppController
{
public ActionResult Read(int article)
{
var output = articleRepository.Find(article);
//This Displays article data in Articles/Read.aspx
return View(output);
}
}
Ce serait tellement plus facile à suivre si vous affiche les contrôleurs de code avec les deux actions que vous voulez travailler avec.
Je suis désolé, je ne pouvais pas comprendre votre question. De
Je suis désolé, je ne pouvais pas comprendre votre question. De
ArticlesController
vous voulez appeler une méthode à CommentsController
. Est ce que c'est?OriginalL'auteur user1511069 | 2012-08-02
Vous devez vous connecter pour publier un commentaire.
Pour répondre directement à votre question, si vous désirez retourner un point de vue qui appartient à un autre contrôleur vous devez simplement spécifier le nom de la vue et de son nom de dossier.
et
Aussi, vous parlez de l'aide d'une lecture et d'écriture de la méthode d'un contrôleur à l'autre. Je pense que vous devriez directement l'accès à ces méthodes par le biais d'un modèle plutôt que d'appeler dans un autre contrôleur que l'autre contrôleur probablement retourne html.
[InvalidOperationException: The view 'Articles/Index' or its master was not found or no view engine supports the searched locations.
J'ai essayé ce. Il a regardé dans /Commentaires/Articles/Index. C'est peut-être une conséquence de l'utilisation des zones.return View("../Articles/Index")
travaillé.Si vous êtes en utilisant les zones que oui, cela ne fonctionnera pas. Pourquoi êtes-vous à l'aide de deux contrôleurs dans les différents domaines de l'accès de la même vue?
Je ne suis pas à l'aide de la Zone à ma demande et toujours retourner à la Vue("../Articles/Index") a travaillé
Vous pouvez également commencer à la racine et dans l'autre sens si vous choisissez
~/Views/Articles/Index.cshtml
OriginalL'auteur The Muffin Man
Vous pouvez vous déplacer vous lire.aspx vue de dossier Partagé. C'est de manière standard dans de telles circonstances
OriginalL'auteur Kirill Bestemyanov
Je ne suis pas vraiment sûr, si j'étais à votre question de droit. Peut-être quelque chose comme
Alors Maintenant, Dans dubugging de mon contrôle, va jusqu'à lire.aspx, mais il n'est pas affiché..Encore write_Comment formulaire est affiché
L'article est disponible à partir de la base de données dans la lecture de l'action lorsque vous rediriger à partir de WriteComment? Est-ce que votre Lecture de l'action de retourner le bon modèle avec mise à jour de commentaire?
public php class articlescontroller : AppController { public ActionResult Lire(int article) { var output = articleRepository.Trouver(article); return View(sortie); } }
Oui il renvoie d'un bon de sortie et de retour de vue(sortie) prend le contrôle de Lire.aspx, mais elle n'est pas affichée.
OriginalL'auteur Tomi Lammi