2009-04-28 17 views
2

In einem Content-Management-System, das Sie in der Regel Seiten on the fly zBWie würden Sie ASP.NET MVC verwenden, um Seiten in einem CMS zu erstellen?

www.website.com.au/home.aspx

www.website.com.au/projects.aspx

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

In einem früheren CMS, das wir geschrieben haben, haben wir diese Dateien physisch auf dem Datenträger erstellt, als der Benutzer eine neue Seite auf seiner Site erstellen wollte. Wir kopiert die neue Datei aus einer Basisvorlage Seite, umbenannt die Datei umbenannt und die Klasse in der Code-behind zB

template_page.aspx und template_page.aspx.cs verwandelte sich in

projects.aspx und projects.aspx. cs

Dies wurde alles über unsere CMS-Anwendung getan. Keine Dateien müssen manuell von einem Benutzer erstellt werden.

Wie würde dieser Ansatz mit MVC funktionieren?

Eg www.website.com.au/home/

www.website.com.au/projects/

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

Vermutlich Wir müssten dynamisch Controller und Views dynamisch erstellen.

Dies scheint noch unordentlicher als der alte Ansatz, aber ich nehme an, es ist machbar.

Kann mir jemand einen klügeren Weg vorstellen?

Antwort

0

Sie sollten einen Controller und einige Ansichten (Anzeigen, Erstellen, Bearbeiten) mit etwas Routing-Arbeit verwenden können. Ich habe eine sehr einfache Implementierung für ein persönliches Projekt gemacht, das so lief. Ich habe diese Route an den Anfang meiner Routingliste gesetzt und anhand der Einschränkung festgestellt, ob sie aus meinen Regeln als statische Seite betrachtet werden sollte. Meine Implementierung hatte keine Hierarchie, d. H. 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) 
} 
Verwandte Themen