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 }
            );
        }
    }

128voto

Nigrimmist Points 41

Soyez prudent. si votre type de modèle est String car le deuxième paramètre de View(string, string) est masterName, pas de modèle . Vous devrez peut-être appeler la surcharge avec l'objet (modèle) comme deuxième paramètre :

Pas correct :

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",msg);
}

Correct :

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",(object)msg);
}

OR (fourni par bradlis7) :

protected ActionResult ShowMessageResult(string msg)
{
    return View("Message",model:msg);
}

32voto

glautrou Points 2010

Problème :

Votre View ne peuvent pas être trouvés dans les emplacements par défaut.

Explication :

Les vues doivent se trouver dans le même dossier nommé comme le Controller ou dans le Shared dossier.

Solution :

Soit vous déplacez votre View à la MyAccount ou créer un dossier HomeController .

Alternatives :

Si vous ne voulez pas déplacer votre View ou créer un nouveau Controller vous pouvez vérifier sur ce site lien .

14voto

Andrew Counts Points 3976

Dans Microsoft ASP.net MVC, le moteur de routage, qui est utilisé pour analyser les combinaisons d'URL entrantes et sortantes, est conçu selon l'idée que la convention prime sur la configuration. Cela signifie que si vous suivez la convention (règles) utilisée par le moteur de routage, vous n'avez pas à modifier la configuration.

Le moteur de routage pour ASP.net MVC ne sert pas les pages web (.cshtml). Il permet à une URL d'être traitée par une classe dans votre code, qui peut rendre du texte/html sur le flux de sortie, ou analyser et servir les fichiers .cshtml de manière cohérente en utilisant la convention.

La convention utilisée pour le routage consiste à faire correspondre un contrôleur à une classe dont le nom est similaire à ControllerNameController c'est-à-dire controller="MyAccount" signifie trouver une classe nommée MyAccountController . Vient ensuite l'action, qui est mise en correspondance avec une fonction de la classe du contrôleur, qui renvoie généralement un message de type ActionResult . c'est-à-dire action="LoginRegister" cherchera une fonction public ActionResult LoginRegister(){} dans la classe du contrôleur. Cette fonction peut retourner un View() qui serait nommé par convention LoginRegister.cshtml et serait stocké dans le /Views/MyAccount/ dossier.

Pour résumer, vous auriez le code suivant :

/Controllers/MyAccountController.cs :

public class MyAccountController : Controller 
{
    public ActionResult LoginRegister()
    {
        return View();
    }
}

/Visualisations/MonCompte/LoginRegister.cshtml : Votre fichier de vue.

11voto

dansasu11 Points 318

Dans votre action LoginRegister, lorsque vous retournez la vue, faites ce qui suit, je sais que cela peut être fait dans mvc 5, je ne suis pas sûr que ce soit également le cas dans mvc 4.

 public ActionResult Index()
 {
     return View("~/Views/home/LoginRegister.cshtml");
 }

6voto

Kapilg Points 1648

Vérifiez l'action de construction de votre vue (fichier .cshtml). Elle doit être définie sur le contenu. Dans certains cas, j'ai vu que l'action de construction était définie sur None (par erreur) et cette vue particulière n'a pas été déployée sur la machine cible, même si vous voyez cette vue présente dans le fichier de projet de Visual Studio sous un dossier valide.

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