2009-08-04 5 views
2

Je développe un site Web pour un client, dans lequel ils veulent être en mesure de gérer le contenu et ajouter/supprimer des pages.ASP.NET MVC site Web où les utilisateurs peuvent ajouter/supprimer des pages

En même temps, certaines pages du site seront interactives et fourniront des rapports personnalisés pour les clients connectés.

J'ai commencé à développer le site dans ASP.NET MVC, parce que je voulais un contrôle total sur le rendu. Cependant, je trouve difficile de modéliser conceptuellement le site.

Si les utilisateurs peuvent ajouter/supprimer des pages, alors comment peut-il y avoir un mappage direct des URL vers les contrôleurs?

Je pourrais faire un seul contrôleur de «page» et lui passer un ID de contenu, mais cela signifierait que tous le code dans le site serait assis sous 1 fichier de classe.

Je pourrais faire en sorte que les pages personnalisées/interactives soient placées sous différents contrôleurs, mais alors, comment le client pourra-t-il les gérer? Je suis vraiment perdu avec l'angle d'utilisabilité de cela aussi. Si je construis des pages interactives personnalisées, comment le client peut-il les ajouter/les supprimer de toute façon? Cela ne va-t-il pas modifier la structure de l'application elle-même?

+0

Je pense à une option ... créer un gestionnaire de routage personnalisé. Il prend l'URL et si un contrôleur n'existe pas, il recherche les lignes 'Contenu' avec un nom correspondant et les affiche en utilisant un contrôleur par défaut (par exemple Page). Si un contrôleur est trouvé, ce contrôleur est exécuté et la ligne 'Content' correspondante, si elle existe, est transmise à ce contrôleur d'une manière ou d'une autre (par exemple via le constructeur). Le routage ASP.NET MVC est-il suffisamment flexible pour cela? – Jonathan

+0

Personnellement, j'utiliserais un système CMS open-source comme Umbraco pour ce type de tâche. Je pense qu'il est plus facile d'intégrer des fonctionnalités sur mesure dans un CMS que d'intégrer un CMS dans un site sur mesure! Bonne chance, cependant. –

Répondre

2

Je vais avoir quelques problèmes pour comprendre exactement ce que vous essayez d'obtenir à et avec ce que votre problème est:

que je pouvais faire un seul contrôleur page ' et de transmettre un ID de contenu, mais que signifierait que tout le code dans le site serait placé sous 1 fichier de classe.

je pouvais faire les pages personnalisées /interactives sont assis sous différents contrôleurs, mais, comment le client sera en mesure de les gérer?

Qu'est-ce qui ne va pas avec "un fichier de classe unique"? Votre problème est-il d'un point de vue sémantique (c'est-à-dire que vous ne voulez pas que toutes les URL commencent par/pages)? Ou juste la gestion du code?

En supposant que vous êtes au service d'une base de données, je ferais ce qui suit:

  1. Avoir un CMSController qui accepte les demandes. Soit a) vérifie l'ID (peut-être en ne tenant pas compte d'un bout), soit b) prend le talon et le regarde dans le db.
  2. Renvoyer le contenu.

De cette façon, les demandes à/CMS/Page/4384 seraient servies comme vous le souhaitez. Vous pourriez alors l'étendre de plusieurs façons. Mettre dans une action par défaut, donc/CMS/4384 sert la page. Puis ajoutez un bouchon (/ CMS/4384/Page-Titre-Ou-Peu importe-Texte). Configurez des routes supplémentaires telles que/aboutus/et/product_info/à tout point de votre CMSController. Ou juste avoir un point d'accès au CMSController.

En outre, le contrôleur peut ouvrir un fichier html sur le système de fichiers et le servir.

Cela aide-t-il du tout?

James

Questions connexes