91 votes

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

Erreur du type : La vue 'LoginRegister' 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/MyAccount/LoginRegister.aspx

~/Views/MyAccount/LoginRegister.ascx

~/Views/Shared/LoginRegister.aspx

~/Views/Shared/LoginRegister.ascx

~/Views/MyAccount/LoginRegister.cshtml

~/Views/MyAccount/LoginRegister.vbhtml

~/Views/Shared/LoginRegister.cshtml

~/Views/Shared/LoginRegister.vbhtml

En fait, ma page d'affichage est ~/Views/home/LoginRegister.cshtml donc ce que je fais

et mon RouteConfig est

 public class RouteConfig
    {

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "MyAccount", action = "LoginRegister", id = UrlParameter.Optional }
            );
        }
    }

3voto

lipidfish Points 326

Cela pourrait être un problème d'autorisations.

J'ai eu le même problème récemment. En guise de test, j'ai créé une simple page hello.html. Lorsque j'ai essayé de la charger, j'ai obtenu un message d'erreur concernant les permissions. Une fois que j'ai réglé le problème des permissions dans le dossier web racine, les problèmes de page html et de rendu MVC ont été résolus.

2voto

Manoj CM Points 29

Vérifiez si la vue (fichier .ASPX) que vous avez créée porte le même nom que celui mentionné dans le contrôleur. Par exemple

 public ActionResult GetView()
 {
    return View("MyView");
 }

Dans ce cas, le fichier aspx doit porter le nom MyView.aspx au lieu de GetView.aspx.

2voto

Saeed Mousavi Points 138

J'ai obtenu cette erreur parce que j'ai renommé ma vue (et mon action POST).

Finalement, j'ai découvert que j'avais oublié de renommer les actions GET et POST avec un nouveau nom.

Solution : Renommer les actions GET et POST pour correspondre au nom de la vue.

1voto

Tawab Wakil Points 355

Si le problème se produit par intermittence en production, il pourrait être dû à l'interruption d'une méthode d'action. Par exemple, lors d'une opération POST impliquant le téléchargement d'un gros fichier, l'utilisateur ferme la fenêtre du navigateur avant la fin du téléchargement. Dans ce cas, la méthode d'action peut lancer une exception de référence nulle résultant d'un modèle ou d'un objet de vue nul. Une solution serait d'envelopper le corps de la méthode dans un try/catch et de renvoyer null. Comme ceci :

[HttpPost]
public ActionResult Post(...)
{
    try
    {
        ...
    }
    catch (NullReferenceException ex)  // could happen if POST is interrupted
    {
        // perhaps log a warning here
        return null;
    }

    return View(model);
}

1voto

Chris Catignani Points 11

J'ai eu le même problème. J'avais copié une vue "Movie" et l'avais renommée "Customer" en conséquence. J'ai également fait la même chose avec les modèles et les contrôleurs.

La résolution était la suivante... J'ai renommé la vue Client en Client1 et créé une nouvelle vue et l'ai appelée Customer..... Ensuite, j'ai simplement copié le code de Customer1 dans Customer.

Ça a marché.

J'aimerais connaître la véritable cause du problème.

UPDATE Juste pour le plaisir, j'ai repris et reproduit le scénario de renommage... et je n'ai obtenu aucune erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X