1

J'ai une structure de fichier de vue comme:Problème retour vue spécifique dans asp.net MVC3

Views 
    Company 
     Department 
     Employee 
      ManageEmployee.cshtml 

et le contrôleur est

public class EmployeeController : Controller 
{ 
    public ActionResult Index(int dptId) 
    { 
      var loadedEmp = getEmpOf(dptId); 
      return View("Company/Employee/ManageEmployee", loadedEmp); 
    } 
} 

Mais le contrôleur me donne une erreur - dire qu'il peut Ne trouvez pas la vue. Ce sont les chemins qu'elle recherche.

~/Views/Employee/Company/Employee/ManageEmployees.aspx 
~/Views/Employee/Company/Employee/ManageEmployees.ascx 
~/Views/Shared/Company/Employee/ManageEmployees.aspx 
~/Views/Shared/Company/Employee/ManageEmployee.ascx 
~/Views/Employee/Company/Employee/ManageEmployee.cshtml 
~/Views/Employee/Company/Employee/ManageEmployee.vbhtml 
~/Views/Shared/Company/Employee/ManageEmployee.cshtml 
~/Views/Shared/Company/Employee/ManageEmployee.vbhtml 

Fondamentalement, si je suis en mesure d'éliminer la section des employés, le moteur trouvera.

~/Vues/employé /Company/Employee/ManageEmployee.cshtml à ce

~/Vues/Société/Employé/ManageEmployee.cshtml

Toute autre idée sur la façon d'y parvenir.

Merci.

+0

Un peu hors sujet/légèrement lié, mais peut-être envisager d'utiliser T4MVC? Cela évitera les "chaînes magiques". Il aide certainement en entrant manuellement les noms de vue - http://mvccontrib.codeplex.com/wikipage?title=T4MVC –

+0

* Vous avez deux options * ** Option # 1 ** * Création de la Société/Département/Annuaire des employés dans ** Dossier partagé **. Vous pouvez rechercher le dossier partagé dans le dossier Vue du répertoire racine. * ** Option 2 ** * Créer le répertoire Employé/Société/Département/Employé indide Afficher le répertoire de votre dossier racine. * –

Répondre

1

Vous devez suivre les conventions CVM de ControllerNameController pour votre contrôleur et la structure de votre vue ControllerName/...

Si vous souhaitez un contrôle total sur votre structure, vous aurez besoin de passer à un autre cadre comme FubuMVC.

+1

Absolument, je besoin de suivre la convention MVCs. Ce que j'ai fait pour résoudre mon cas était de créer des classes partielles du même contrôleur avec un nom de fichier différent, pour séparer la logique, mais avoir la structure URl que je cherchais. Merci – roncansan

7

Avez-vous essayé:

return View("/Company/Employee/ManageEmployee", loadedEmp); 

Il semble que le moteur tente de retourner la vue par rapport à votre position actuelle dans le site plutôt que de la racine du site.

2

Voir doit être renvoyé du contrôleur de la manière suivante (pour affichage spécifique):

return View("ManageEmployee", loadedEmp); 

Dans MVC, le contrôleur achemine automatiquement au nom de la vue qui vous est fourni.

loadedEmp doit être l'objet que vous passez à la vue.

1

Si vous voulez votre propre convention d'organiser les structures de dossiers de vues, il serait préférable de brancher votre propre moteur de vue.

Questions connexes