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
J'ai utilisé return View("ViewName", model)
et j'ai changé la structure de mes répertoires car c'était le problème.
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);
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");
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);
}
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.