web-dev-qa-db-fra.com

vue partielle non trouvée ou aucun moteur de vue ne prend en charge les emplacements recherchés

J'ai le code de contrôleur suivant:

public MyController:Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [ChildActionOnly]
    public ActionResult MyPartialViewAction()
    {
        return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView",PartialViewModel);
    }
}

et ma vue d'index a le code suivant:

@HTML.Action("MyPartialViewAction")

Lorsque je lance l'application Web, j'obtiens HttpException avec InnerExceptionMessage en tant que:

InnerException {"La vue partielle '~/Views/Shared/MyCustomFolder/_MyPartialView' 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:\r\n ~~/Views/Shared/MyCustomFolder/_MyPartialView" } System.Exception {System.InvalidOperationException}

Ce que j'ai essayé jusqu'à maintenant:

  • J'ai essayé de déplacer _MyPartialView de ~/Views/Shared/MyCustomFolder vers ~/Views/Shared/ et ~/Views/MyControllerFolder, mais l'erreur persiste

  • J'ai essayé de changer mon code d'indexation en @HTML.RenderAction() mais pas de chance.

Des entrées sur où je vais mal?

Merci

36
siva

Vous devez ajouter l'extension .cshtml au nom de la vue:

return PartialView("~/Views/Shared/MyCustomFolder/_MyPartialView.cshtml",PartialViewModel);
45
Maess

Juste au cas où la réponse sélectionnée ne fonctionnerait pas pour vous:

J'ai changé l'action de compilation du fichier cshtml en Contenu et cela a été corrigé.

38
Sanvir Manilal

Vérifiez également les espaces après votre nom de fichier, avant le ".cshtml". J'avais inséré accidentellement un espace après mon nom de fichier, ce qui a perturbé le comportement automatique de PartialView () pour moi.

3
Michael Sefranek

J'ai reçu ce message d'erreur car la vue partielle avait été ajoutée au fichier de projet (.csproj) mais n'était pas réellement présente sur le disque.

0
dwilli