web-dev-qa-db-fra.com

Appel d'une autre vue différente à partir du contrôleur en utilisant ASP.NET MVC 4

J'ai une vue (Index.cshtml) avec un bouton d'envoi. Lorsque le bouton d'envoi est cliqué, il appelle une action (Action01) dans le contrôleur (TestController.cs). Ainsi, à la fin de l'action, je souhaite retourner à la vue de l'appelant (Index.cshtml) avec un modèle de vue personnalisé en tant que paramètre. . Comment puis-je faire cela?

Résultats après première tentative en utilisant View ("ViewName", modèle):

Une erreur est générée car l'action se trouve dans le contrôleur Test. Par conséquent, le système cherche\Views\Tests\Index et renvoie ma page Index dans\Views\Home\Index.

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é la structure de mes répertoires car c'était le problème.

38
user1624552

Vous pouvez directement retourner une vue différente comme:

return View("NameOfView", Model);

Ou vous pouvez créer une vue partielle et retourner comme:

return PartialView("PartialViewName", Model);
80
Neel

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

return View("ViewName", yourModel);

si la vue se trouve dans un dossier différent sous Vues dossier, utilisez le chemin sous le chemin absolu:

return View("~/Views/FolderName/ViewName.aspx");
39
Jatin patil

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

public ActionResult About()
{            
   return View("NameOfViewYouWantToReturn",Model); 
}
3
Rabia Sohail

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
César León