2017-10-15 7 views
-1

Je suis nouveau à MVC et j'essaie de me débrouiller en créant un site de pratique qui sera un site de galerie pour visualiser et télécharger des images. Le problème que j'ai rencontré est que je ne peux pas obtenir le routage pour fonctionner correctement.Acheminement MVC 4 à un contrôleur

Voici un lien vers mon code de routage et l'arborescence de la solution: https://imgur.com/a/Oc1Tt? Est-ce que j'ai défini incorrectement les vues et le contrôleur? L'erreur que j'obtiens est: La vue 'Index' ou son maître n'a pas été trouvé ou aucun moteur de vue ne supporte les emplacements recherchés. Les endroits suivants ont été recherchées:

Merci pour toute entrée

+0

Renommer HomeView.cshtml à Index.cshtml – Jaybird

+0

Le code doit être dans la question - non pas un lien vers une image de celui-ci. –

+0

1) Il est préférable de donner le même nom à la méthode d'action et à la vue correspondante. Donc vous devez simplement faire 'return View()'. 2) Il est également utile d'avoir une action 'Index' par défaut dans chaque contrôleur et vue. 3) Il n'est pas nécessaire d'ajouter 'View' aux fichiers' cshtml'. 4) En savoir plus sur les conventions MVC. – adiga

Répondre

0

de routage fonctionne en convertissant une requête entrante à valeurs de route ou en utilisant des valeurs de chaque voie pour une URL. Les valeurs d'itinéraire sont soit définies en tant que paramètres dans l'URL elle-même, soit en tant que valeurs par défaut, soit les deux (dans lesquelles les valeurs par défaut rendent les paramètres d'URL facultatifs).

Vous n'avez défini aucune valeur de route sur votre itinéraire. Comme vous n'avez pas de paramètres de routage dans l'URL, vous devez définir des valeurs par défaut (le contrôleur et l'action sont requis par MVC).

routes.MapRoute(
    name: "Gallery", 
    url: "Gallery/Index", 
    defaults: new { controller = "Gallery", action = "Index" } 
); 

Cela dit, votre itinéraire Default couvre déjà cette URL. Vous devez seulement ajouter des routes personnalisées si vous souhaitez un comportement que l'itinéraire Default ne couvre pas. En outre, si vous modifiez les noms des vues afin qu'elles ne correspondent pas au nom de la méthode d'action, vous devez spécifier explicitement le nom de la méthode d'action.

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

Par défaut, MVC utilise des conventions. Il est beaucoup plus simple de nommer simplement la vue Index.cshtml au lieu de GalleryView.cshtml afin que vous puissiez simplement retourner View à partir de la méthode d'action.

public ActionResult Index() 
{ 
    return View(); 
}