Asp.net MVC même nom de la vue, des chemins différents
Je veux avoir plusieurs chemin structure de dossiers qui contiennent les même nom vues:
/profile.aspx
/admin/profile.aspx
/user/editpost.aspx
/admin/editpost.aspx
/Controllers
|- PostController.cs
|- ProfileController.cs
Je veux être en mesure d'avoir des pages dans un dossier et les pages d'administration dans un autre dossier. Dois-je organiser mon dossier Vues comme:
/Views
/User
/Story
|- editpost.aspx
/Profile
|- profile.aspx
/Admin
/Story
|_ editpost.aspx
/Web
|- profile.aspx
ou est-il une manière que je peux le faire:
/User
/Views
/Story
|- editpost.aspx
/Profile
|- profile.aspx
/Admin
/Views
/Story
|_ editpost.aspx
/Web
|- profile.aspx
Aussi, comment puis-je code/organiser/utilisation des contrôleurs distincts pour /de l'Utilisateur et /Admin qui pourraient avoir le même nom?
Laissez-moi savoir si j'ai été clair.
Merci!
ressemble MVC 2 est les Zones d'appui
OriginalL'auteur john | 2009-07-23
Vous devez vous connecter pour publier un commentaire.
L'un des problèmes majeurs avec la sortie d'un premier album Et tous les RC et la Bêta est une évidence) ASP.NET MVC ne prend pas en charge les domaines. Les zones sont quelque chose que la variante MVC cadres pour ASP.NET ont pris en charge pour un certain temps et lorsque votre projet est d'une taille raisonnable, vous allez finir avec, éventuellement, des centaines de contrôleurs (tous avec des noms uniques) dans le même dossier et votre code va être très difficile de faire le tri à travers.
Votre idée est tout à fait sensé et j'espère que les futures instances de la ASP.NET MVC framework prend en charge les zones hors de la boîte (façon de parler). Dans le même temps, il est facile de créer votre propre cadre sur le dessus de ASP.NET MVC.
Voici quelques messages qui vont vous aider:
par çağdaş
réponse de Steve à Phil post
prenant plus loin
Les zones
J'espère qu'ils sont utiles pour vous.
OriginalL'auteur Odd
Pas de problème. Vous pouvez organiser vos dossiers en aucune façon que vous choisissez. Vous pouvez spécifier une vue par nom ou même par son chemin d'accès dans la méthode d'Action:
OriginalL'auteur Tim
Vous devriez lire ce post par Phil Haack.
En gros, tu vas avoir à créer votre propre ViewEngine de travailler avec votre dossier de conception.
OriginalL'auteur Çağdaş Tekin
Il y a une autre option:
vous pouvez créer personnalisé ViewEngine et spécifier vue/partialview endroits.
Par exemple:
vous permet d'utiliser "Partielle" dossier pour les vues partielles.
Mais je préfère personnellement les Domaines. Il semble que c'est exactement ce dont vous avez besoin.
OriginalL'auteur Arnis Lapsa
Plus que probable que chaque modification de la vue va nécessiter différents champs afin que le partage de editpost n'est pas vraiment viable.
Toutefois, si vous modifiez [exactement] le même champs, puis peut-être organiser les vues que vous avez et ensuite rendre un partialview que vous pouvez passer à un modèle.
La partialView peut être dans un endroit commun, ce qui maintient votre séparation des inquiétudes dans la mesure où les points de vue sont concernés ainsi que la réutilisation de code avec la partialview.
Chaque contrôleur dispose alors de son propre nom comme UserController et AdminController. À l'intérieur de chacune d'elles, vous avez votre editpost action pas de probs.
Cela aide ou avez-vous besoin de plus?
oh, et garder tout en 1 webapp de préférence.
Vous pourriez avoir l'admin des pages combinées dans l'ordinaire de la communauté de pages et puis tout simplement décorer ensuite avec [Autoriser( Rôles="admin")] ou quelque guff. Mais vraiment, si ces pages sont pour l'utilisateur admin, alors pourquoi ne pas les séparer et de les verrouiller au niveau de la classe. Seulement permet d'économiser beaucoup de farce autour dans les autres contrôleurs qui n'ont pas besoin de savoir à propos de l'utilisateur admin.
OriginalL'auteur griegs
Avez-vous essayer de passer le point de vue spécifique dans les Contrôleurs? Je pense que vous pourrait contourner le MVC des points de Vue communs dossier de conception en passant par le point de vue spécifique sur n'importe quel contrôleur (Cependant, je ne recommande pas).
Je ne suis pas sûr à 100% mais je pense que vous pourriez faire des choses comme
Mais alors vous devrez changer vos itinéraires, de sorte que les contrôleurs de acheminés en conséquence. Je pense que je l'ai lu il y a quelques temps, mais je n'ai pas trouvé la référence. Laissez-moi savoir si cela fonctionne.
Toutefois, si votre point de Vue dicter votre conception, alors peut-être que vous ne devriez pas utiliser MVC, après tout.
OriginalL'auteur Freddy