2009-04-28 9 views
2

Dans un système de gestion de contenu, vous pouvez créer généralement des pages à la volée, par exempleComment utiliseriez-vous ASP.NET MVC pour créer des pages dans un CMS?

www.website.com.au/home.aspx

www.website.com.au/projects.aspx

www.website.com.au/contact-us.aspx

Dans un précédent CMS que nous avons écrit, nous avons physiquement créé ces fichiers sur disque lorsque l'utilisateur a choisi de créer une nouvelle page sur son site. Nous avons copié le nouveau fichier à partir d'une page de modèle de base, le fichier renommé et renommé la classe dans le code derrière par exemple

template_page.aspx et template_page.aspx.cs transformé en

projects.aspx et projects.aspx. cs

Tout cela a été fait via notre application CMS. Aucun fichier n'a besoin d'être créé manuellement par un utilisateur.

Comment cette approche fonctionnerait-elle en utilisant MVC?

Par exemple, www.website.com.au/home/~~V~~singular~~3rd

www.website.com.au/projects/

www.website.com.au/contact-us/

Vraisemblablement nous aurions besoin de créer dynamiquement des contrôleurs et des vues à la volée?

Cela semble encore plus désordonné que l'ancienne approche, mais je suppose que c'est faisable. Quelqu'un peut-il penser à une façon plus intelligente de le faire?

Répondre

0

Vous devriez pouvoir utiliser un contrôleur et plusieurs vues (affichage, création, modification) avec certains travaux de routage. J'ai fait une implémentation super simple pour un projet personnel qui allait comme ça. J'ai placé cette route en haut de ma liste de routage et j'ai utilisé la contrainte pour déterminer si elle devait être considérée comme une page statique de mes règles. Ma mise en œuvre n'avait aucune sorte de hiérarchie, c'est-à-dire des pages/About-us/contact-only/contact.

route: 
routes.MapRoute("StaticContent", "{title}", 
    new { controller = "Page", action = "Details"}, 
    new { title = new InvalidTitleContstraint()}); 


controller: 
public class PageController : Controller 
{ 
    // Details checks if it can find a matching title in the DB 
    // redirects to Create if no match 
    public ActionResult Details(string title) 
    // GET 
    public ActionResult Create() 
    // POST 
    public ActionResult Create(Page page) 
} 
Questions connexes