web-dev-qa-db-fra.com

Ajouter des vues dans des sous-dossiers dans ASP.NET MVC 3

Je travaille sur le projet ASP.NET MVC 3. Je souhaite diviser les contrôleurs, les modèles et les vues dans des sous-dossiers par souci de simplicité. Je suis capable de le faire avec des contrôleurs et des modèles, mais lorsque je crée une vue, celle-ci se crée automatiquement dans le dossier racine Views, y at-il un moyen de résoudre ce problème?

par exemple. Je peux créer 

classe de modèle en tant que,

Models/Finance/Bank.cs
Models/Finance/Finance.cs
Models/Production/Production.cs

contrôleur en tant que,

Controllers/Finance/BankController/Create
Controllers/Finance/BudgetController/Create
Controllers/Production/ProcessController/Create

mais où j'ai essayé de créer la vue pour les actions ci-dessus, il crée dans,

Views/Bank/Create.aspx
Views/Budget/Create.aspx
Views/Process/Create.aspx

Je veux que ce soit comme

Views/Finance/Bank/Create.aspx
Views/Finance/Budget/Create.aspx
Views/Prodution/Process/Create.aspx

Est-il possible de créer des vues dans le même sous-dossier que celui créé pour les contrôleurs et les modèles? Merci!

15
Kailas Mane

les étapes suivantes ont fonctionné pour moi,

  1. Créez les sous-dossiers que vous voulez dans Views (dossier racine). dans mon cas, c'était Finance & Production.

  2. Faites simplement glisser les dossiers créés automatiquement dans Views dans les sous-dossiers appropriés. dans mon cas, Bank & Budget à Finance et Process à Production

  3. Pendant que vous retournez une vue d'une action du contrôleur, indiquez le chemin complet de la vue sous la forme,

    returnView("~/Views/Finance/Bank/Create.aspx")

    returnView("~/Views/Finance/Budget/Create.aspx")

    returnView("~/Views/Production/Process/Create.aspx")

25
Kailas Mane

Les modèles et les contrôleurs sont des fichiers source compilés. Ils sont compilés dans une DLL et, en tant que tels, ils peuvent littéralement être placés n'importe où dans le projet et cela ne fera aucune différence. Ces classes n'ont aucun concept de leur emplacement dans le système de fichiers car elles n'existent pas dans le système de fichiers une fois compilées.

Les vues, par contre, sont différentes. Ce sont des fichiers texte déployés sur le serveur, chargés et analysés au moment de l'exécution. Le framework doit donc savoir où les trouver.

Les outils créeront toujours les vues dans le dossier ~\Views\Controller (ou dans le dossier ~ Area\AreaName\Controller). Vous pouvez les déplacer n'importe où après, mais vous devrez donner le chemin d'accès complet à la méthode View () (y compris .cshtml). Ou vous devrez implémenter un ViewEngine personnalisé qui définit les chemins de recherche où vous le souhaitez.

18
Erik Funkenbusch
2
Jeroen

La vue nommée est Selon le nom du contrôleur, vous devez suivre la règle.
Si vous voulez créer Views/Admin/Create, alors votre CustomerController.cs devrait être nommé AdminController.cs.

0
ChunHao Tang