Appeler une autre vue différente du contrôleur en utilisant ASP.NET MVC 4

J'ai une vue (Index.cshtml) avec un bouton Soumettre. Lorsque le bouton Soumettre est cliqué, il appelle une action (Action01) dans le contrôleur (TestController.cs) donc, à la fin de l'action, je veux revenir à l'appelant (Index.CSHTML) avec un modèle de vue personnalisé en tant que paramètre. Comment dois-je faire?

Résultats après première tentative à l'aide de la Vue("ViewName",modèle):

Une erreur est déclenchée, car l'action est dans le test du contrôleur, donc en retournant, elle recherche ViewsTestsIndex, et ma page d'Index est dans ViewsHomeIndex.

La vue 'Index' ou son maître n'a pas été trouvée ou aucun moteur de vue ne prend en charge les emplacements recherchés. Les emplacements suivants ont été recherchés:

~/Views/Test/Index.aspx
~/Views/Test/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Test/Index.cshtml
~/Views/Test/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml

Solution Finale:

J'ai utilisé return View("ViewName", model), et j'ai changé ma structure de répertoires comme c'était le problème.

31
demandé sur Peter Mortensen 2013-09-20 10:49:38

4 réponses

Vous pouvez directement renvoyer une vue différente comme:

return View("NameOfView", Model);

Ou vous pouvez faire une vue partielle et peut retourner comme:

return PartialView("PartialViewName", Model);
72
répondu Neel 2015-07-07 17:24:48

Pour renvoyer une vue différente, vous pouvez spécifier le name de la vue que vous souhaitez renvoyer et model comme suit:

return View("ViewName", yourModel);

Si la vue se trouve dans un dossier différent sous Vues dossier, utilisez le chemin absolu ci-dessous:

return View("~/Views/FolderName/ViewName.aspx");
34
répondu Jatin patil 2018-07-18 13:40:24

Vous devez spécifier le nom de la vue personnalisée et son modèle associé dans la méthode D'Action du contrôleur.

public ActionResult About()
{            
   return View("NameOfViewYouWantToReturn",Model); 
}
3
répondu Rabia Sohail 2017-04-04 11:00:02

En outre, vous pouvez simplement définir le ViewName:

return View("ViewName");

Exemple de contrôleur complet:

public ActionResult SomeAction() {
    if (condition)
    {
        return View("CustomView");
    }else{
        return View();
    }
}

Cela fonctionne sur MVC 5.

0
répondu César León 2018-06-27 16:38:49